当我将随机UTF-8网页视为UTF-16时,为什么很可能会看到中文字符?

时间:2014-01-14 08:01:10

标签: html unicode encoding utf-8

出于好奇,我在随机英文网页的编码菜单中选择了UTF-16,看看会发生什么(在Chrome上:工具 - >编码 - > Unicode(UTF-16LE)。我感兴趣的是我看到的所有mojibake都是汉字(和一些整体符号)。

从ASCII / UTF-8英语切换到UTF-16时,是否有任何统计原因可以看到汉字?是HTML标签中的随机非中文特殊字符吗?

3 个答案:

答案 0 :(得分:3)

由于UTF-16中的最小单位是两个字节长,因此拉丁语等大多数“低”字符的第一个字节以NUL字节开头:00 xx。由于普通内容通常不包含NUL字节,因此在将随机字节序列解释为UTF-16时,几乎不可能触及拉丁字符。 UTF-8编码内容的大多数字节都位于较低的中间位置,例如46 6F。这恰好是许多亚洲语言在UTF-16中的地方,而且由于中文是一个巨大的障碍,你很可能会遇到它。

答案 1 :(得分:2)

大多数英文字符在[0x40-0x5a]十六进制范围内进行ASCII编码。如果您将UTF-8转码为UTF-16,那么您的大部分字符都会在[0x4040-0x5a5a]范围内,显然会映射到中文字符

答案 2 :(得分:0)

我同意Raul Andres的意见,只要您查看仅包含ASCII字符的ASCII或UTF-8为utf-16。但是,如果你的utf-8内容包含在utf-8中产生2字节,3字节或4字节序列的泰语,希伯来语或其他语言,你可能不会再查看中文字符了。