Rails CSV文件上传字符编码问题

时间:2013-01-29 20:36:55

标签: ruby-on-rails excel csv encoding

我知道已经有很多关于此问题的线索,但是由于某些原因,所提出的解决方案似乎都不适合我...

我正在使用:

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文件只是不可能的任务?

此致

奥利

0 个答案:

没有答案