Solaris10のファイル名の文字化け


初めて質問します。

Soalris10環境で日本語ディレクトリ名作成を作成すると文字化けします。  
同様な現象や回避方法を知っている方いますでしょうか。  
最終的には、日本語ファイル名を使わないようにする予定ですが、既存のものを一時的に何とかしたいと考えています。

文字化けする環境と再現手順は、以下の通りです。

[code]

    $ uname -a
    SunOS osc20068 5.10 Generic_147440-27 sun4v sparc sun4v
    $ cat /etc/release
                       Oracle Solaris 10 8/11 s10s_u10wos_17b SPARC
      Copyright (c) 1983, 2011, Oracle and/or its affiliates. All rights reserved.
                                Assembled 23 August 2011
    $ echo $LANG
    ja_JP.UTF-8 
    $
    
    $ mkdir 品 目 品目
    $ ls
    品     目     哇���
    $
    
[/code]

取得した16進ダンプの写しを添付します。

[code]

    $ mkdir a品a b目b c品目c
    $ ls
    a品a b目b c哇���c
    $ ls -d a*
    a品a
    $ ls -d a* | od -cx
    0000000 a 345 223 201 a \n
             61e5   9381   610a
    0000006
    $ ls -d b*
    b目b
    $ ls -d b* | od -cx
    0000000 b 347 233 256 b \n
             62e7   9bae   620a
    0000006
    $ ls -d c*
    c哇���c
    $ ls -d c* | od -cx
    0000000 c 345 223 207 222 233 256 c \n
             63e5   9387   929b   ae63   0a00
    0000011
    
[/code]

追加で取得したダンプです。

[code]

    $ ls
    a品a     b目b     c哇���c
    $ LANG=C ls | od -tx1
    0000000 61 e5 93 81 61 0a 62 e7 9b ae 62 0a 63 e5 93 87
    0000020 92 9b ae 63 0a
    0000025
    $
    
[/code]

historyやlsの結果をファイルに保管、表示した場合は文字化けしませんでした。

[code]

    $ ls
    a品a     b目b     c哇���c
    $ echo a品a b目b c品目c >tmp.txt; cat tmp.txt
    a品a b目b c品目c
    $ history | grep mkdir
      503  mkdir a品a b目b c品目c
      510  history | grep mkdir
    $
    
[/code]

ファイルでも同様に文字化けしました。

[code]

    $ touch 品 目 品目
    $ ls
    品     目     哇���
    $
    
[/code]

文字化けした結果をファイルに保管したものは、文字化けします。  
ファイルシステムの問題かもしれません。

[code]

    $ ls
    品     目     哇���
    $ ls > tmp.txt
    $ cat tmp.txt
    tmp.txt
    品
    目
    哇���
    $
    
[/code]




まずは、`$LANG` が環境変数になっている (シェルで `export` されている) こと、`$LC_ALL`
が設定されていないか、値に見えない文字が含まれていないかの確認をしてください。

[code]

    $ env |egrep '^(LANG|LC_ALL)='
    $ printf '%s' "$LANG" |cat -v
    $ printf '%s' "$LC_ALL" |cat -v
    
[/code]

ファイルシステムの問題かもしれないので、マウント元やマウントオプションを確認してください。

[code]

    $ nawk -v m="`df . |sed 's/ .*//'`" '$3==m {print}' /etc/vfstab
    $ mount |grep "^`df . |sed 's/ .*//'` "
    
[/code]

とりあえず、ここまで。原因や、ここまでの操作で得られる情報で何かわかるかは現時点では不明。

