Ruby 1.9.xでは、File.open('filename','r:iso-8859-1')
を使用してエンコードを指定できます。多くの短いファイルを読み取る場合は、1行のFile.read()を使用することを好みます文字列に直接変換します。エンコードを直接指定する方法はありますか、それとも次のいずれかに頼らなければなりませんか?
str = File.read('filename')
str.force_encoding('iso-8859-1')
または
f = File.open('filename', 'r:iso-8859-1')
s = ''
while (line = f.gets)
s += line
end
f.close
fine manual から:
read(name、[length [、offset]]、open_args)→string
ファイルを開き、オプションで指定された
offset
をシークし、length
バイトを返します(デフォルトではファイルの残りの部分になります)。read
は、戻る前にファイルが確実に閉じられるようにします。最後の引数がハッシュの場合、内部のopen()のオプションを指定します。
したがって、次のように言うことができます。
>> s = File.read('pancakes', :encoding => 'iso-8859-1')
>> s.encoding
=> #<Encoding:ISO-8859-1>