Ruby1.9で文字列比較していたら、同じ文字列のはずなのに一致しなくて悩んでいた。なので、String#dumpしてみると…
>> puts filname.inspect => "うぃきぺいじ.md" >> p filname.dump => "\"\\u{3046}\\u{3043}\\u{304d}\\u{3078}\\u{309a}\\u{3044}\\u{3057}\\u{3099}.md\"" >> puts str2.inspect => "うぃきぺいじ.md" >> p str2.dump => "\"\\u{3046}\\u{3043}\\u{304d}\\u{307a}\\u{3044}\\u{3058}.md\""
ファイル名が「うぃきへ゜いし゛」になっていました。
どうやらMac OSXではファイル名を俗称UTF8-Macという方式を利用しているらしい。この方式では、濁音を全て分割し、表示する際に合成しているとのこと。Macのgitでも長らくこの方式に対応していなかったそう。
ということで、UTF8-MacをUTF8に変換してやりましょう。
>> puts filname.inspect => "うぃきぺいじ.md" >> filname.encode('utf-8', Encoding::UTF8_MAC).dump => "\"\\u{3046}\\u{3043}\\u{304d}\\u{307a}\\u{3044}\\u{3058}.md\"" >> puts str2.inspect => "うぃきぺいじ.md" >> str2.encode('utf-8', Encoding::UTF8_MAC).dump => "\"\\u{3046}\\u{3043}\\u{304d}\\u{307a}\\u{3044}\\u{3058}.md\""