【发布时间】:2015-01-08 03:48:03
【问题描述】:
需要使用某种映射或启发式方法检测字符串编码的好工具。
例如字符串:áÞåàÐÝØÒ ÜÝÞÓÞ ßàØÛÞÖÕÝØÙ Java, ÜÞÖÝÞ ×ÐÝïâì Òáî ÔÞáâãßÝãî ßÐÜïâì
预期:сохранив много приложений Java, можно занять всю доступную память
编码为“ISO8859-5”。当我尝试使用以下库检测它时,结果是“UTF-8”。很明显,字符串是用utf保存的,但是有没有什么启发式的方法使用符号映射来分析字符并匹配正确的编码?
使用常用编码检测库:
- enca (aptitude install enca)
- chardet (aptitude install chardet)
- uchardet (aptitude install uchardet)
- http://tika.apache.org/
- http://npmjs.com/package/detect-encoding
- libencode-detect-perl
- http://www-archive.mozilla.org/projects/intl/UniversalCharsetDetection.html
- http://jchardet.sourceforge.net/
- http://grepcode.com/snapshot/repo1.maven.org/maven2/com.googlecode.juniversalchardet/juniversalchardet/1.0.3/
- http://lxr.mozilla.org/seamonkey/source/extensions/universalchardet/src/
- http://userguide.icu-project.org/
- http://site.icu-project.org
【问题讨论】:
-
具体情况还不清楚。您的初始字符串“áÞåàÐÝØÒ..”显然是由于使用错误的编码误解了字节块的结果。因此,不清楚 "The encoding is "ISO8859-5"" 应该是什么意思。任何启发式工具都不会分析“字符”,它需要查看 字节,尝试所有可能的编码,然后确定哪种编码最有可能适合这些字节,因为字符解释似乎最具有统计意义。
标签: encoding utf-8 character-encoding