2011年1月23日日曜日

【ruby】エンコード指定でファイル入出力

ファイルを入出力する際には、アプリの内部エンコーディングとは異なるエンコーディングのファイルを開きたい場合がある。
そんな時には、Fileを開く際に外部エンコーディングを指定してあげれば良い。

実行時に文字列のエンコーディングを変更する方法→http://se-bikou.blogspot.com/2010/02/ruby19.html

ファイル出力


windows-31jのフィルを出力する場合

#coding:utf-8
# windows-31jを指定してファイルを開く
File.open("test.txt", "w:windows-31j") { |file|
  file.puts "1,あいうえお"
  file.puts "2,あいうえお"
}

euc-jpを指定する場合

#coding:utf-8
# euc-jpを指定してファイルを開く 
File.open("test.txt", "w:euc-jp") { |file| 
  file.puts "1,あいうえお" 
  file.puts "2,あいうえお" 
}

ファイル入力


euc-jpのファイルを出力

# euc-jpのファイルを読み込む場合
# 入力ファイルのエンコーディングには、euc-jpを指定する。 
File.open("test.txt", "r:euc-jp") {|file| 
  file.each {|line| 
    puts "#{line}:#{line.encoding}" 
  } 
}