From: "NARUSE, Yui" Date: 2014-01-09T10:04:36+09:00 Subject: [ruby-dev:47877] Re: [Mac OS X] Dir.glob で取得したファイル名のバイト列が異なる OS XのHFS+上のファイル名をRubyでどう扱うべきかについては、 今でも知見が十分に得られているとは言い難いので、 どのような問題に遭遇したのか共有していただけると助かります。 2014年1月9日 10:02 Watson : > ご返答ありがとうございます。 > > 仕様変更ということなので、今後再び振る舞いが変わることがなさそうなので、 > 現在、私が遭遇している問題についてはこちらで対処したいと思います。 > > > ありがとうございました。 > > (2014/01/09 9:53), NARUSE, Yui wrote: >> 端的には仕様変更です。 >> 長大な議論の果てに変更されたわけなのですが、詳細をすぐには思い出せないので、 >> さしあたっては http://bugs.ruby-lang.org/issues/7267 を御覧ください。 >> 解説が必要でしたら解説します。 >> >> 2014年1月3日 16:33 Watson : >>> Ruby 2.0 までは OS X のファイル名を Dir.glob で取得したときには >>> OS X ファイルシステムが返す Normalization Form D バイト列が Dir.glob で >>> 取得されておりました。 >>> >>> Ruby 2.1 からは Normalization Form C に変換したバイト列が Dir.glob で >>> 取得されるようになっているようなのですが、仕様が変わったのでしょうか? >>> >>> % cat test.rb >>> system "touch 'が'" >>> Dir.glob("*").each do |file| >>> next if file == $0 >>> puts "** #{file} **" >>> file.each_byte do |b| >>> p b >>> end >>> end >>> >>> % ruby -v test.rb >>> ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13] >>> ** が ** >>> 227 >>> 129 >>> 139 >>> 227 >>> 130 >>> 153 >>> >>> % ruby -v test.rb >>> ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin13.0] >>> ** が ** >>> 227 >>> 129 >>> 140 >> >> > -- NARUSE, Yui