Does Ruby provide a way to do File.read() with specified encoding?
28,650
From the fine manual:
read(name, [length [, offset]], open_args) → string
Opens the file, optionally seeks to the given
offset
, then returnslength
bytes (defaulting to the rest of the file).read
ensures the file is closed before returning.If the last argument is a hash, it specifies option for internal open().
So you can say things like this:
s = File.read('pancakes', :encoding => 'iso-8859-1')
s.encoding
#<Encoding:ISO-8859-1>
Author by
Chthonic Project
Updated on June 07, 2021Comments
-
Chthonic Project almost 3 years
In ruby 1.9.x, we can specify the encoding with
File.open('filename','r:iso-8859-1')
. I often prefer to use a one-line File.read() if I am reading many short files into strings directly. Is there a way I can specify the encoding directly, or do I have to resort to one of the following?str = File.read('filename') str.force_encoding('iso-8859-1')
or
f = File.open('filename', 'r:iso-8859-1') s = '' while (line = f.gets) s += line end f.close