Ruby 初心者スレッド Part 40
■ このスレッドは過去ログ倉庫に格納されています
0759デフォルトの名無しさん
2011/02/01(火) 19:45:20テキストをファイルにUTF-8で出力したいです。
例として、テキストファイル(中身はSJIS)を読み込んで、別のファイルに内容は同じで
UTF-8で出力するプログラムを書きました(ソースの文字コードは SJIS)が、あってますか?
require 'nkf'
inFileName = ARGV[0] # 入力ファイル名
outFileName = ARGV[1] # 出力ファイル名
outFile = open(outFileName, "w")
open(inFileName, "r") {|file|
while line = file.gets
line = NKF.nkf("-Sw", line);
outFile.puts line
end
}
outFile.close
java だと以下のように、ファイルハンドルを開くときに文字コードを指定し、そこに書き込んだ内容は、自動的にその文字コードになります。
FileOutputStream fos = new FileOutputStream(outFileName);
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw);
pw.println("あいうえお");
Ruby 1.8系の場合は文字列は単なるbyte列であり、入力のテキストファイルから読み込んだ文字列はShiftJISのバイト列です。
そのバイト列に対して NKF ライブラリで UTF-8 のバイト列にした後で、
出力ファイル用のファイルハンドルに書き込むと、write はそのバイト列をそのままファイルに格納するだけ、と理解しました。
他に正しい方法があれば教えてください。
■ このスレッドは過去ログ倉庫に格納されています