Mac だとファイル名に濁音や半濁音が2文字扱いになる ので、いろいろと困ることがあります[^1]。な のでフツーの UTF-8 に戻したい ですね。
というメモです。
やりかた
くわしいことはさておき、2行で済ませます。
NKF ライブラリでやる
require 'nkf'
filename_utf_8 = NKF.nkf('--ic=UTF-8-MAC -w', filename_utf_8_mac)
String#encode
でやる(2017/2/27追記)
Ruby 1.9以降だとあんまり NKF でやるのはどうかな、と思いますし、コメントでもご指摘頂きましたので、(NKF ライブラリを使わずに) String#encode
でやってみましょう。
filename_utf_8 = filename_utf_8_mac.encode(Encoding::UTF_8, Encoding::UTF8_MAC)
気付いたのは Encoding::UTF_8
って書くところ。Encoding::UTF8
じゃダメなんです。でも Encoding::UTF_8_MAC
は Encoding::UTF8_MAC
でもいいんです。なんでよぉ。
参考
オプション文字列
-j -s -e -w -w16 出力するエンコーディングを指定する -w UTF-8 を出力する(BOMなし) --ic=input_codeset 入力のエンコーディングを指定します。 以下のエンコーディングが利用可能です。 ここでの名前の指定には大文字小文字は無視されます。 UTF-8-MAC これは入力側にしか指定できません
[^1]: コメント頂いたように、「Dir.glob
とかで取れるパス名は UTF8
」であり、特に困らなかったので削除。 Ruby メンテナたちに改めて感謝。