使用Ruby上载文件字符集转换

我有一个应用程序,我们让客户上传一个csv文件到我们的服务器。 然后我们处理并将来自csv的数据放入我们的数据库中。 我们遇到了一些char-sets的问题,特别是当我们处理JSON时,特别是一些非转换的UTF-8字符在JSON响应上打破了IE。

有没有办法在我们开始处理之前将上传的csv文件转换为UTF-8? 有没有办法确定上传文件的字符编码? 我玩过iconv但我们并不总是确定上传文件的编码方式。 谢谢。

这个解决方案可能并不理想,但应该完成这项工作。

一,成分:

  • chardet( sudo gem install chardet
  • fastercsv( sudo gem install fastercsv

现在实际代码(未测试):

 require 'rubygems' require 'UniversalDetector' require 'fastercsv' require 'iconv' file_to_import = File.open("path/to/your.csv") # determine the encoding based on the first 100 characters chardet = UniversalDetector::chardet(file_to_import.read[0..100]) if chardet['confidence'] > 0.7 charset = chardet['encoding'] else raise 'You better check this file manually.' end file_to_import.each_line do |l| converted_line = Iconv.conv('utf-8', charset, l) row = FasterCSV.parse(converted_line)[0] # do the business here end