Ruby proporciona una forma de hacer el archivo.read () con codificación especificada?


En ruby 1.9.x, podemos especificar la codificación con File.open('filename','r:iso-8859-1'). A menudo prefiero usar un archivo de una línea.read () si estoy leyendo muchos archivos cortos en cadenas directamente. ¿Hay alguna forma de especificar la codificación directamente, o tengo que recurrir a una de las siguientes?

str = File.read('filename')
str.force_encoding('iso-8859-1')

O

f = File.open('filename', 'r:iso-8859-1')
s = ''
while (line = f.gets)
    s += line
end
f.close
Author: mu is too short, 2012-07-26

1 answers

Del manual fino :

Read (name, [length [, offset]], open_args) → string

Abre el archivo, opcionalmente busca el offset dado, luego devuelve length bytes (por defecto al resto del archivo). read asegura que el archivo se cierra antes de regresar.

Si el último argumento es un hash, especifica la opción para internal open().

Así que puedes decir cosas como esta:

>> s = File.read('pancakes', :encoding => 'iso-8859-1')
>> s.encoding
=> #<Encoding:ISO-8859-1>
 47
Author: mu is too short,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-16 23:48:56