【问题标题】:How do I encode files to UTF-8 for Rails 3?如何将文件编码为 Rails 3 的 UTF-8?
【发布时间】:2012-10-29 21:19:34
【问题描述】:

我一直在处理 Outlook 导入(在导出到 Outlook 格式中链接),但我遇到了编码问题。我通过导出我的 LinkedIn 联系人获得的 Outlook 格式 CSV 不是 UTF-8。像ñ 这样的字母在调用str.to_s.mb_chars.normalize 时会导致mongoid_search gem 出现异常。我认为编码是问题所在,因为当我调用mb_chars (see first code example) 时。我不确定这是否是 gem 中的错误,但我还是被建议清理数据。

通过 File Picker,我尝试使用他们新的、社区支持的 gem 来上传 CSV 数据。我尝试了三种编码检测器和转码器:

  1. Python 库 chardet 的 Ruby 端口
    • 未按预期工作
    • 端口仍然包含 Python 代码,阻止它在我的应用程序中运行
  2. rchardet19宝石
    • 检测到iso-8859,置信度为.8/1
    • 尝试使用 Iconv 进行转码,但在 ñ 处因“非法字符”而崩溃
  3. Charlock_Holmes宝石
    • 33/100 置信度检测到windows-1252
    • 我假设这是实际的编码,rchardet 得到了iso-8859,因为这是基于此的。
    • 这个 gem 使用 ICU 并且有一个支持 Heroku 的维护分支“bundle-icu”。当我尝试使用charlock 进行转码时,我收到错误U_FILE_ACCESS_ERROR,ICU 错误代码表示“无法打开文件”

有人知道在这里做什么吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 encoding chardet


    【解决方案1】:

    Ruby 1.9 内置了编码,你试过了吗:

    s.force_encoding 'utf-8'
    

    mb_chars 是 ruby​​ 1.8 的包装器,因此您不需要它。

    查看重复的

    how to convert character encoding with ruby 1.9

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-12
      • 2011-02-14
      • 2020-05-25
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      相关资源
      最近更新 更多