2

\r\n キャリッジ リターンを持つ Windows でエンコードされた UTF-16LE ファイルを頻繁に扱います。以下を使用してファイルを UTF-8 に変換しても問題はありません。

File.new(filepath, 'r:utf-16le:utf-8')

しかし、これはもちろん \r を取り除くわけではありません。私が現在それらを取り除く方法は

str.gsub("\r", "")

しかし、ファイルを読み込んでいる間にそれを処理するのは良いことです。String#encode には、すべての改行を必要な種類の改行に変換する :cr_newline、:crlf_newline、および :universal_newline オプションがあります。ファイルの読み込み中にこれらまたは同様のオプションを適用する方法はありますか?

4

1 に答える 1

1

メソッドIO#getsは、行を区切る方法を定義する文字列を渡すことができるオプションの引数を取ります。

file = File.new(filepath, 'r:utf-16le:utf-8')
while (line = file.gets("\r\n"))
   ...
end
于 2012-06-19T05:49:06.537 に答える