首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >神秘的UTF-8类编码

神秘的UTF-8类编码
EN

Stack Overflow用户
提问于 2016-12-22 17:14:28
回答 1查看 126关注 0票数 2

我收到了一个据说在UTF-8中的文件,但是对于一些非英语字符有一些奇怪的编码。例如,在这个神秘的编码中,Hangul字符串

한국경북영덕군강구면

编码为:

0xED959C 0xEAB5AD 0xEAB2BD 0xEBB63F 0xEC983F 0xEB3F95 0xEAB095 0xEAB095 0xEAB5AC 0xEBA9B4

(粗体差异)而不是标准UTF-8:

0xED959C 0xEAB5AD 0xEAB2BD 0xEBB 681 0xEC9881 0xEB8D95 0xEAB095 0xEAB095 0xEAB5AC 0xEBA9B4“

我看到了西里尔字母和汉字的相同现象--有些字符和UTF-8有相同的编码,但有些则不同。乱码字符与非乱码字符的字节宽度相同,我已经证实它们不是扩展集的一部分。另外,我已经证实这是而不是 Java“修改后的UTF-8”。

对于这可能是什么,还有什么其他的想法吗?

顺便说一句:我无法访问代码或最初编写文件的人。

另外,我在Mac10.11.6上,以防与此有任何关系。

EN

回答 1

Stack Overflow用户

发布于 2016-12-22 23:10:17

示例字符串由UTF-8组成,但某些字节值(即x81和x8D)替换为ASCII问号? (x3F)。唯一合理的解释是,您的示例字符串已通过一段软件,该软件试图根据其他编码(可能是单字节字符集)解释其内容,并将“无效”字符替换为? (类似于Unicode文本处理器如何用U+FFFD替换无效Unicode字符)。

不幸的是,这个过程并不是完全可逆的,因为至少有两个不同的字节值(可能还有更多的字节值在您的示例中没有出现)被替换了,因此在每种情况下都没有确定原始字节值的保证方法。这取决于它有多重要--也就是说,取决于它花在上面的时间--你可以潜在地识别被替换的完整字节集,然后写一些东西,为每个字节尝试每一个可能的值,将得到的字符序列与(例如)相关语言文本语料库中的二进制图频率进行比较,并选择最可能的字节。(当然,它会犯一些错误。若要估计结果错误率,可以在已知文本上尝试相同的进程。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41288511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档