我知道已经有很多关于此问题的线索,但是由于某些原因,所提出的解决方案似乎都不适合我...
我正在使用:
Ruby 1.9.2
Rails 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文件只是不可能的任务?
此致
奥利