From: "sorah (Shota Fukumori)" Date: 2012-07-04T20:48:31+09:00 Subject: [ruby-dev:45916] [ruby-trunk - Bug #6698] MacOSXではDir.globが返すファイル名の内容はUTF8-MACですがencodingがUTF-8になっている Issue #6698 has been updated by sorah (Shota Fukumori). imkira (Mario Freitas) wrote: > redmineのcode blockを使ってみましたが、表示おかしくなりましたT_T 直しておきました。RD のフォーマットを有効にするには =begin, =end で囲う必要があります (RDボタンを押すとそれで全体が囲われるはずです) ---------------------------------------- Bug #6698: MacOSXではDir.globが返すファイル名の内容はUTF8-MACですがencodingがUTF-8になっている https://bugs.ruby-lang.org/issues/6698#change-27798 Author: imkira (Mario Freitas) Status: Open Priority: Normal Assignee: Category: Target version: 1.9.3 ruby -v: ruby 1.9.3dev (2011-08-02 revision 32803) [x86_64-darwin10.8.0] =begin MacOSXでは、「だ」など濁点が含まれているファイル名をDir.globで調べると返ってくるencodingが間違っているようです。 Dir.glob('*.{jpg,png}') do |filename| puts "#{filename} #{filename.encoding}" end 「だ」というファイル名はUTF-8というencodingを使った"\u305F\u3099"と返ってきます。 表示的に"\u305F\u3099"を"\u3060"と比較すれば同じものなんですが、それぞれ違うencodingになっているため当然比較は失敗します。 Dir.globが返したfilenameを下記のようにすると正常に比較が出来るようになります。 filename = filename.force_encoding("UTF8-MAC").encode("UTF-8") これって、Dir.globの不具合ですかそれとも正しい動きですか? =end -- http://bugs.ruby-lang.org/