[ruby-dev:47876] Re: [Mac OS X] Dir.glob で取得したファイル名のバイト列が異なる

From: Watson <watson1978@...>
Date: 2014-01-09 01:02:17 UTC
List: ruby-dev #47876
ご返答ありがとうございます。

仕様変更ということなので、今後再び振る舞いが変わることがなさそうなので、
現在、私が遭遇している問題についてはこちらで対処したいと思います。


ありがとうございました。

(2014/01/09 9:53), NARUSE, Yui wrote:
> 端的には仕様変更です。
> 長大な議論の果てに変更されたわけなのですが、詳細をすぐには思い出せないので、
> さしあたっては http://bugs.ruby-lang.org/issues/7267 を御覧ください。
> 解説が必要でしたら解説します。
>
> 2014年1月3日 16:33 Watson <watson1978@gmail.com>:
>> 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
>
>

In This Thread