我有一个应用程序,我们让我们的客户将 csv 文件上传到我们的服务器。然后,我们处理 csv 中的数据并将其放入我们的数据库中。我们遇到了一些字符集问题,尤其是在处理 JSON 时,特别是一些未转换的 UTF-8 字符在 JSON 响应中破坏了 IE。
在我们开始处理之前,有没有办法将上传的 csv 文件转换为 UTF-8?有没有办法确定上传文件的字符编码?我已经玩过 iconv 了,但我们并不总是确定上传的文件会有什么编码。谢谢。
我有一个应用程序,我们让我们的客户将 csv 文件上传到我们的服务器。然后,我们处理 csv 中的数据并将其放入我们的数据库中。我们遇到了一些字符集问题,尤其是在处理 JSON 时,特别是一些未转换的 UTF-8 字符在 JSON 响应中破坏了 IE。
在我们开始处理之前,有没有办法将上传的 csv 文件转换为 UTF-8?有没有办法确定上传文件的字符编码?我已经玩过 iconv 了,但我们并不总是确定上传的文件会有什么编码。谢谢。
此解决方案可能并不理想,但应该可以完成工作。
一、成分:
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