Cygwin使っている人いますか? その17
■ このスレッドは過去ログ倉庫に格納されています
0605588
2007/03/07(水) 01:44:07yes.
長くなるので前のレスでは説明を省いたんだけど、追加で簡単に解説。
素のcygwin1.dllはA系のWin32APIを使ってるので、
日本語Windowsの場合、内部コードはShift_JIS(※)になる。
※厳密には Windows-31J (Windows Codepage 932)
http://www2d.biglobe.ne.jp/~msyk/charcode/cp932/index.html
だから、Shift_JIS対応のターミナルエミュレータがあれば、
「一応」日本語が取り扱える。例えば「ls --show-control-chars」
とすると、日本語のファイルがあればそのまま日本語で表示される。
(ちなみにおいらはローカライズ版のrxvtをShift_JIS設定で使ってる)
しかし、cygwin1.dllの中では、パス名の変換などで、2バイト文字
のことをなーんも考えずにバイト単位で処理してくれやがるので、
「表」のように2バイト目に「\」がくるような文字が含まれると
破綻が生じる。例えば、2バイト目が消されたり、
「\」を「/」に変換してくれたりして、ファイル名が壊れる。
このパッチは、この問題を解消するためのもの。これにより、
日本語のファイル名/ディレクトリ名があったときにfindがコケる
といったことがなくなる。(ファイル名/ディレクトリ名が
CP932にない文字だとやっぱりコケるけど)
ただし、実際にはこれだけでは不十分で、localeまわりがぐだぐだ
なせいもあって、bashなどは正しく動いてくれない。この問題を
正しく解消するには、UTF-8に対応するのが最適なんだけど……。
■ このスレッドは過去ログ倉庫に格納されています