ruby-on-rails - Rails 3,导入前检查 CSV 文件编码

标签 ruby-on-rails ruby csv

在我的应用程序(Rails 3.0.5、Ruby 1.8.7)中,我创建了一个导入工具来从文件导入 CSV 数据。

问题:我要求我的用户以 UTF-8 编码从 Excel 中导出 CSV 文件,但大多数时候他们并没有这么做。

如何在导入前验证文件是否为 UTF-8?否则导入将运行但会产生奇怪的结果。我使用 FasterCSV 导入。

错误的 CSV 文件示例:

;VallÈe du RhÙne;CÙte Rotie;

谢谢。

最佳答案

您可以使用 Charlock Holmes,Ruby 的字符编码检测库。

https://github.com/brianmario/charlock_holmes

要使用它,您只需读取文件,然后使用detect 方法。

contents = File.read('test.xml')
detection = CharlockHolmes::EncodingDetector.detect(contents)
# => {:encoding => 'UTF-8', :confidence => 100, :type => :text}

如果格式不正确,您也可以将编码转换为 UTF-8:

utf8_encoded_content = CharlockHolmes::Converter.convert contents, detection[:encoding], 'UTF-8'

这使用户无需在再次上传之前自己进行操作。

关于ruby-on-rails - Rails 3,导入前检查 CSV 文件编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234046/

相关文章:

ruby-on-rails - rails : Combining 2 active resource collections

ruby - 为 nginx 在 passenger 上部署了多个 Ruby on Rails 应用程序

ruby - 有没有办法从 ActiveRelation 对象中删除分页?

sql - 将 psql 输出保存到 csv 文件

python - 读取 CSV 文件中的所有列?

ruby-on-rails - 减少Mongrel Rails的内存占用并提高性能?

javascript - 当用户点击按钮 5 次时如何执行警报?

c++ - 如何在Mac OS X上安装ruby-filemagic?

ruby-on-rails - 为什么我的路由坚持是 GET,而它应该是 PUT

python - Pandas Dataframe - 排序日期时出现问题