2012-07-26 3 views
23

In Ruby 1.9.x, è possibile specificare la codifica con File.open('filename','r:iso-8859-1'). Spesso preferisco usare File.read() su una riga se sto leggendo molti file brevi in ​​stringhe direttamente. C'è un modo per specificare direttamente la codifica o devo ricorrere a uno dei seguenti?Ruby fornisce un modo per fare File.read() con la codifica specificata?

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 

risposta

41

Dal fine manual:

lettura (nome, [lunghezza [, offset]], open_args) → stringa

Apre il file , facoltativamente cerca il dato offset, quindi restituisce length byte (impostazione predefinita per il resto del file). read assicura che il file sia chiuso prima di tornare.

Se l'ultimo argomento è un hash, specifica l'opzione per internal open().

Così si può dire cose come questa:

>> s = File.read('pancakes', :encoding => 'iso-8859-1') 
>> s.encoding 
=> #<Encoding:ISO-8859-1> 
Problemi correlati