1

我知道已经有很多关于这个的线程,但是由于某种原因,建议的解决方案似乎都不适合我......

我在用:

红宝石 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 文件只是一项不可能完成的任务?

问候,

奥利

4

0 回答 0