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