38

在 ruby​​ 1.9.x 中,我们可以使用File.open('filename','r:iso-8859-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

来自精美手册

读取(名称,[长度[,偏移量]],open_args)→字符串

打开文件,可选择查找给定的offset,然后返回length字节(默认为文件的其余部分)。read确保文件在返回之前关闭。

如果最后一个参数是一个哈希,它指定内部 open() 的选项。

所以你可以这样说:

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