2

Rails アプリで csv アップローダーを作成しましたが、時々エラーが発生します。

Windows-1252 から UTF-8 への変換での "\x9D" から UTF-8 への変換

これは私のアップローダーのソースです:

def self.import(file)
  CSV.foreach(file.path, headers: true, encoding: "windows-1252:utf-8") do |row|
    title = row[1]
    row[1] = title.to_ascii
    description = row[2]
    row[2] = description.to_ascii
    Event.create! row.to_hash
  end
end

私は unidecode gem ( https://github.com/norman/unidecoder ) を使用して、ユーザーが入力する間抜けな文字を正規化しています。このエラーに何度か遭遇しましたが、修正方法がわかりません。この行で問題が解決すると思いましたencoding: "windows-1252:utf-8"が、何もありませんでした。

ありがとうスタック!

4

1 に答える 1

2

Windows-1252には 9D 文字 (および 81、8D、8F、90) はありません。これは、テキストがWindows-1252 エンコーディングではないことを意味します。少なくとも、ソース テキストが破損しています。

于 2013-09-06T16:56:20.713 に答える