【发布时间】: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