Предоставляет ли Ruby способ выполнять File.read() с указанной кодировкой?
В 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
1 ответ
Решение
читать (имя, [длина [, смещение]], open_args) → строка
Открывает файл, при желании ищет указанный
offset
затем возвращаетсяlength
байт (по умолчанию для остальной части файла).read
гарантирует, что файл закрыт перед возвратом.Если последний аргумент является хешем, он указывает опцию для внутреннего open().
Таким образом, вы можете сказать такие вещи:
>> s = File.read('pancakes', :encoding => 'iso-8859-1')
>> s.encoding
=> #<Encoding:ISO-8859-1>