【问题标题】:Ruby 2: Detect encoding from binary ASCII-8BIT dataRuby 2:从二进制 ASCII-8BIT 数据中检测编码
【发布时间】:2015-07-21 16:20:01
【问题描述】:

我必须从外部来源加载一些数据。当我查看编码时,Ruby 告诉我ASCII-8BIT,二进制文件。但是,一些源编码为ISO-8859-1,其中一些位于UTF-8。当我尝试将ISO-8859-1 编码的内容转换为UTF-8 时,出现错误。但是当我执行content.force_encoding('ISO-8859-1').encode('UTF-8') 之类的操作时,一切正常。

但是,反过来就不行了。当我尝试将 UTF-8 数据编码为 ISO 时,最终会出现损坏的字符,例如 

那么,有没有办法检测 ASCII-8BIT数据,然后转换成UTF-8

【问题讨论】:

  • 快速搜索找到了一个可以解决您问题的库...github.com/brianmario/charlock_holmes
  • 这是不可能的。只有启发式方法存在。
  • @AJFaraday 我试过那个宝石,就像一个魅力!如果您将评论添加为答案,我会接受。
  • 没有绝对可靠的方法可以做到这一点,您确实需要跟踪哪些文件采用何种编码。但如果非要猜的话,有一些宝石可以帮你猜,但也不是绝对可靠。

标签: ruby encoding utf-8 character-encoding ascii-8bit


【解决方案1】:

我用谷歌搜索了一下,找到了 Brian Lopez 的 Charlock Holmes gem。看起来它会执行您所追求的检测过程。

https://github.com/brianmario/charlock_holmes

【讨论】:

    猜你喜欢
    • 2011-08-23
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 2014-08-26
    • 2017-10-02
    • 2013-05-01
    相关资源
    最近更新 更多