38

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
4

1 に答える 1

62

細かいマニュアルから:

read(name、[length [、offset]]、open_args)→string

ファイルを開き、オプションで指定されたをシークしてから、バイトoffsetを返します(デフォルトではファイルの残りの部分になります)。戻る前にファイルが閉じていることを確認します。lengthread

最後の引数がハッシュの場合、内部open()のオプションを指定します。

したがって、次のように言うことができます。

s = File.read('pancakes', :encoding => 'iso-8859-1')
s.encoding
#<Encoding:ISO-8859-1>
于 2012-07-26T07:39:24.597 に答える