【Ruby】UTF-16でエンコードされたファイルを扱う方法
#UTF-16でエンコードされたファイルをUTF-8に変更する方法について
※Ruby 2.0.0-p247で動作(どのバージョンから動くのかは調べていない)
調べるとiconvを使う方法やnkfを使う方法等情報が混在していたため、備忘録がてらまとめておく
以下の例では、ディレクトリ以下にある全てのUTF-16でエンコードされたファイルをUTF-8に変更する。
def trans_utf8(path) Dir::glob(path).select{|item| File.file?(item)}.each do |file| File.open(file, 'r'){ |f| buffer = f.read(); buffer = buffer.encode("UTF-8", "UTF-16", :invalid => :replace, :undef => :replace, :replace => '*') f = File.open(file, 'w') f.write(buffer) } end end
fileもう一回開きなおしたらclose要るのかな?確認する。