我已经在我的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"
行可以修复这个问题,但是没有任何效果。
谢谢堆栈!
2条答案
按热度按时间qmelpv7a1#
Windows-1252中没有9D字符(以及81、8D、8 F、90)。这意味着您的文本在Windows-1252编码中 * 不是 *。至少您的源文本已损坏。
s3fp2yjn2#
我在阅读URL内容时遇到此错误:
如果文件太大,我有条件获取的API将返回 GZIP。
另一个恼人的事情是,Rails解压缩在一个有效的UTF8错误上失败了。
这不起作用:
这确实奏效了:
我的下一个问题是
CSV.parse()
读取整个blob,我有一行错误。哇。