0

タブ区切りで、デフォルトの文字セット「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
4

0 に答える 0