1.7.5のLANGまわりの挙動が変

久し振りに cygwin のバージョンを上げたら、挙動がおかしくなった。

どうも、内部的に扱う文字列を勝手に UTF-8 に変換かけてるっぽい。

LANGを設定してなかったら勝手に LANG=C.UTF-8 に設定して、Windows内で標準で設定されているエンコーディングの文字列(CP932)を勝手に UTF-8 に変換してるっぽい…

/etc/profile.d/lang.sh:test -z "${LC_ALL:-${LC_CTYPE:-$LANG}}" && export LANG=C.UTF-8

LANG=C.UTF-8 な状態で「ruby -Ks -e 'Dir.mkdir "日本語"'」とかすると、
ruby内部ではちゃんと「日本語」という SJISエンコーディングディレクトリを作ろうとするのだが、
cygwin内部で mkdir が呼ばれる時に、UTF-8エンコーディングに変換されて UTF-8 エンコーディングディレクトリ名でディレクトリを作ろうとしてる…

とりあえず、コンパネのシステムの環境変数で LANG=ja_JP.SJIS を設定しておく…と、まあ何となくまともに動く様になったっぽい。

~/trash/tmp$ uname -a

CYGWIN_NT-5.1 xxx 1.7.5(0.225/5/3) 2010-04-12 19:07 i686 Cygwin

~/trash/tmp$ echo $LANG

ja_JP.SJIS

~/trash/tmp$ ruby -v

ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]

~/trash/tmp$ ruby -Ks -e 'Dir.mkdir "日本語"'

~/trash/tmp$ LANG=C.UTF-8 ruby -Ks -e 'Dir.mkdir "日本語"'

~/trash/tmp$ ll

drwxr-xr-x 1 ???????? ???????? 0 2010-06-02 20:49 日本語/
drwxr-xr-x 1 ???????? ???????? 0 2010-06-02 20:50 日本語/

~/trash/tmp$ echo * | hex -is -os

0x00000000: 93 fa 96 7b 8c ea 20 93 - fa 96 7b 8c ea 0a       日本語 日本語

…おい。ちょっと待て。

この変な仕様(バグ?)は、ちょっと勘弁して欲しいなあ。
(因みに Explorer とかから見ると、後から作成した UTF-8ディレクトリの方はちゃんと(?)文字化けして見える)