タブ区切りで、デフォルトの文字セット「Unicode」で開くファイルを受け取りました。「Unicode」はおそらくUTF-16を指していると私は理解しています。
このコマンドを使用してこのファイルを開こうとすると:
CSV.foreach(file, :col_sep => "\t", :headers => true) do |column|
puts column[0]
end
次のエラーが表示されます。
invalid byte sequence in UTF-8
このファイルを開いて「UTF-8」として保存すると問題なく動作することはわかっていますが、ファイルを手動で開いて毎回それを行うことはできません。このエラーを回避するにはどうすればよいですか?
編集:
encoding: 'UTF-16BE'
以下のstefansリクエストごとに : を渡すと、これを受け取ります:
invalid byte sequence in UTF-16BE
おそらく、間違ったエンコーディング オプションを渡しているのでしょうか?
EDIT2:
を渡すと:encoding => 'ISO-8859-1'
、次のエラーが発生します。
Illegal quoting in line 1. (CSV::MalformedCSVError)
私のファイルの1行目は次のとおりです。
"Status" "Internal ID" "Language" "Created At" "Updated At" "IP Address" "Location" "Username" "GET Variables" "Referrer" "Number of Saves" "Weighted Score" "Completion Time" "Invite Code" "Invite Email" "Invite Name" "Invite: branchid" "Invite: lastname" "Invite: clientname" "Invite: membershipid" "Invite: clientid" "Invite: dateofbirth" "Invite: membershiptype" "Invite: branch" "Invite: unitid" "Invite: shortname" "Invite: changedatetime" "Invite: homephone" "Collector"
を入れてみましたquote_char
が、同じエラーが発生します。私のコードは次のようになります。
CSV.foreach(file, :col_sep => "\t", :encoding => 'ISO-8859-1', :quote_char => '"', :headers => true) do |column|
puts column[0]
end