From: KOSAKI Motohiro Date: 2012-11-03T04:56:59+09:00 Subject: [ruby-dev:46375] Re: [ruby-trunk - Bug #2154][Assigned] filesystem encoding of UNIX >> とくに指定しなければ、default external は locale から設定されるので、 >> 「UNIXにおけるfilesystem encodingはlocaleである」というのはそれほど >> 変ではないのではないでしょうか。 > > ふむ。 > とすると、本当は、filesystem encodingを明示して設定するAPIが > 合ったほうがいいんでしょうかね。 > 2.0.0にも間に合わなわなさそうなので今は深入りを避けますが。 めんどくさいケースは以下の2つですかね。 1) ロケールは UTF-8 ファイルシステムはFAT(よってファイルシステムのファイル名はShiftJIS or another country specific codepage) ファイルの中身は EUC ※これはSDカードなどで実際に発生しうる 2) ロケールはUTF-8だけどファイルシステムエンコーディングはUTF8MACな某OS というパターンだと思うので、これをケアする必要があるならAPIが必要そうに思えます。要望を上がってこない所をみるとあんまり困ってないのかな まとまってないので思いついたことを箇条書きで書くと ・Linuxではlocale(UTF-8)、MacではUTF8MAC、WindowsではUTF-16(だっけ?)がデフォルトのファイルシステムエンコーディングであって欲しい ・SDカード対策のために違うエンコーディングを指定できて欲しい。これはdefault_externalをかえるよりかは引数で与えれたほうが便利そうな気がする。 default_externalを変えちゃうと別のスレッドがぎゃっといいそうだから ・default_filesystem_encondingみたいなのがあれば、昔のLinuxのイメージに残っているEUC-JPなデータをサルベージするときに便利そうである ・2.0ではデフォルトはlocaleにしておいたほうが、あとから自然に拡張できるような気がする 以上です。もうちょっと考えてからまたなんか書くかも