我不知道原始代码是什么,所以我假设原始代码是IBM850或ISO8859-1。我的流程在下面
IBM850 - > UTF8
如果这样可以,我认为原始代码是IBM850,如果是NOK,请执行下一步:
ISO8859-1 - > UTF8
如果没关系,我认为原始代码是UTF8。
但是有一个问题, 如果原始代码是ISO8859-1,它将被IBM850识别。 如果原始代码是IBM850,它将被ISO8859-1识别。
似乎IBM850和ISO8859-1之间存在共同点。
谁能帮助我,谢谢。
答案 0 :(得分:0)
是的,通过测试转换是否失败或成功,只能进行最微不足道的自动检测。对于几乎任何输入都有效的输入编码,它不起作用。
您应该了解更多关于您的可能输出的信息,以测试从IBM850
或ISO8859-1
翻译后是否更有意义。这就是enca
和libenca
所做的事情。你可以从一些简单的期望开始检查:
ASCII
子集中?然后你对任何转换感到满意(但你根本无法知道原始编码)。IBM850
的一些候选人。ISO8859-1
中的 control 字符?如果没有,如果使用代码点ISO8859-1
- 0x80
,则很容易拒绝0x9F
的某些候选人。