我知道已经有很多关于这个的线程,但是由于某种原因,建议的解决方案似乎都不适合我......
我在用:
红宝石 1.9.2
导轨 2.3.8
我的用户在 MS Excel 中创作 CSV 文件,然后需要将这些文件上传到 Web 应用程序。我的 Web 应用程序和数据库后端使用 UTF-8 和所有特殊字符,例如 £ 符号,在上传时会损坏。
我正在阅读这样的文件:
@file = params[:import_file][:uploaded_data]
然后使用以下方法获取文件的编码:
source_encoding = "UTF-8"
if @file.external_encoding
source_encoding = @file.external_encoding.name
end
对于我的测试文件,源编码值为 ASCII-8BIT。
然后我尝试做:
@file.each {|line|
print "#{line.force_encoding(source_encoding).encode!("UTF-8") }\n"
}
为了查看是否所有文本都显示正常。然而,这给了我这样的错误:
"\xA3" 从 ASCII-8BIT 到 UTF-8
如果我尝试使用以下方式读取 CSV:
dataArray = CSV.read(@file, encoding: source_encoding)
这次没有错误,但所有特殊字符都变成 ? 人物。
任何我可能出错的指针或导入使用 MS Excel 编写的 CSV 文件只是一项不可能完成的任务?
问候,
奥利