正確には「UTF-8 で見えるように設定することができる」ですが。さらに言うと、2008年7月時点(Cygwin 1.7.0 リリース時)でそうなっているようです。情報古いよ俺。

たとえば、「漢字.txt」というファイルだけがあるディレクトリにおいて以下のようになります。

umezawa@umewin /cygdrive/c/Users/umezawa/Documents/test
$ ls | od -t x1
0000000 e6 bc a2 e5 ad 97 2e 74 78 74 0a
0000013

ここでポイントなのはロケールの LC_CTYPE によって見える文字コードが決まるということです。つまり環境変数を変更するとそれだけで設定が変わりますし、ユーザ毎どころかプロセス毎に違う文字コードでファイル名が見えるようにできます(後半はあまり意味が無いと思いますが)。

umezawa@umewin /cygdrive/c/Users/umezawa/Documents/test
$ export LC_CTYPE=japanese.sjis; ls | od -t x1
0000000 8a bf 8e 9a 2e 74 78 74 0a
0000011

umezawa@umewin /cygdrive/c/Users/umezawa/Documents/test
$ export LC_CTYPE=ja_JP.utf8; ls | od -t x1
0000000 e6 bc a2 e5 ad 97 2e 74 78 74 0a
0000013

ちなみにロケール関係の環境変数が全く設定されていない場合は “C.UTF-8” というロケールになり、ファイル名は UTF-8 で見えます。

私は5年ぐらい前から Unix 環境では LC_CTYPE が日本語 UTF-8 になるようにしているのですが、これでようやく Unix と Cygwin とで(ファイル名の)文字コードが異なるという状況から脱することができます。異なってると rsync とかする時に困るんですよね。

Trackback

no comment untill now

Add your comment now