0

私の目標は、firstnameとlastnameの行を含むファイルをアップロードし、それを解析して、各行のdbにPersonモデルを作成することです。

私は次のことをします、そしてそれはうまくいきます

file = CSV.parse(the_file_to_parse)
file.each do |row|
  person = Person.new(:firstname => row[0], :lastname => row[1])
  person.save
end

ファイルにアクセント(フランス語)が含まれるまで、

Encoding::UndefinedConversionError: "\xC3" from ASCII-8BIT to UTF-8:
INSERT INTO "people" ("created_at", "firstname", "lastname",
"updated_at") VALUES (?, ?, ?, ?)

このエンコーディングの問題に対処するための最良の方法は何ですか?

4

3 に答える 3

2

正しいエンコーディングでcsvファイルを開く必要があります。例えば:

require 'csv'
require 'pp'

encoding = "ISO-8859-1"

csv = CSV.open "names.csv", "rb:#{encoding}"
csv.each do |line|
    puts "#{line[0]} #{line[1]}"
end

ヒントは次のとおりです。おそらくUTF-8ではありません。

rubyがサポートするエンコーディングのリストは、irbの次のコマンドで表示できます。

puts Encoding.list.map(&:to_s).sort
于 2012-04-07T12:38:41.413 に答える
0

設定してみてください

# encoding: utf-8  

rubyファイルの上部にあります。また

export RUBYOPT=-Ku 

Railsの前

于 2012-04-07T11:23:44.487 に答える
0

入力ファイルのエンコーディングについての手がかりがない場合は、ensure_encodingを試してみてください。

入力エンコーディングを推測し、(すべてのエンコーディングで機能するわけではありませんが)希望のターゲットエンコーディングに変換しようとします。

于 2012-07-28T10:37:01.000 に答える