From: "NARUSE, Yui" Date: 2009-04-29T18:43:26+09:00 Subject: [ruby-dev:38356] Re: [Feature:1.9] transcode for UTF8-MAC 成瀬です。 Nobuyoshi Nakada wrote: > Mac OS Xのシステムコールとしては、NFCだろうとNFDだろうと区別せず > に通すようです。 正確にはVFSドライバのレイヤーですね。 そこで、上位レイヤーからのパスはファイルシステムに適した形に、 ファイルシステムからのパスはdecomposed UTF-8に、基本的には変換します。 「ファイルシステムに適した形」というのは、必ずしもdecomposed Unicodeには ならないという意味です。 例えば、HFS+ではdecomposed UTF-16になります。 しかし、smb経由でWindowsのファイルサーバーにアクセスする場合、 Mac OS Xはファイル名を合成済み形式にしてアクセスを行います。 そして、分解済みのファイル名を持つファイルにはアクセスすることができません。 例外がUFSとNFSで、この2つでは上記の処理が行われません。 > 現状では、シェルのglobではNFDがそのまま渡されたり、それ以外の部 > 分ではNFCになっていたり、ARGVやENVはUTF-8のままであったり、 > UTF8-MACを分けていることによるメリットはありません。UTF-8に統一 > して、normalizeするメソッドを追加するほうがよいのではないでしょ > うか。 「normalizeするメソッド」はr23296にて、transcodeにUTF8-MACを追加という形で 対処を行いました。 「UTF-8に統一」というのには設定するエンコーディングを「UTF-8」にする という意味だけですか? ファイル名のリストを取得する際に変換という話もなさっていたように思いますが。 # で、その場合ARGVやENVはどうするのかなぁという疑問がある -- NARUSE, Yui