我有一个应用程序,我们让客户将csv文件上传到我们的服务器。然后我们处理并将来自csv的数据放入我们的数据库中。我们遇到了一些char-sets的问题,特别是当我们处理JSON时,特别是一些未转换的UTF-8字符在JSON响应中打破了IE。
有没有办法在我们开始处理之前将上传的csv文件转换为UTF-8?有没有办法确定上传文件的字符编码?我玩过iconv但我们并不总是确定上传文件的编码方式。感谢。
答案 0 :(得分:2)
这个解决方案可能并不理想,但应该做好。
首先,成分:
sudo gem install chardet
)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