我正在(重新)阅读Joel's great article on Unicode并看到了这一段,我不太明白:
例如,您可以为Hello(U + 0048)编码Unicode字符串 U + 0065 U + 006C U + 006C U + 006F)ASCII或旧的OEM希腊语编码, 或希伯来语ANSI编码,或任何数百种编码 到目前为止已经发明了一个问题:一些字母可能 没出现!如果没有Unicode代码点的等价物 你试图用你想要代表的编码来表示 它,你通常会得到一个小问号:?或者,如果你真的 好,一个盒子。你得到了什么? - >
为什么会有一个问号,他的意思是“或者,如果你真的很好,一个盒子”?他试图展示什么角色?
答案 0 :(得分:5)
存在问号,因为编码过程识别出编码不支持该字符,而是替换问号。通过“如果你真的很好”,他的意思是,“如果你有一个更新的浏览器和正确的字体支持,”你会得到一个更漂亮的替换字符,一个盒子。
在Joel的案例中,他并没有尝试显示真实角色,他确实包含了Unicode替换字符U+FFFD REPLACEMENT CHARACTER。
答案 1 :(得分:2)
这是一个相当混乱的段落,我真的不知道作者试图说什么。无论如何,不同的浏览器(和其他程序)有不同的方法来处理字符问题。问号“?”可能出现在正在使用的字体中没有字形的字符的位置,因此它有效地说“我无法显示字符。”浏览器也可以使用一个小矩形,或者一些其他指标,出于同样的目的。
但“ ”符号是REPLACEMENT CHARACTER,通常用于指示数据错误,例如当字符数据已从某些编码转换为Unicode并且它包含一些无法用Unicode表示的字符时。浏览器通常在显示中使用“ ”用于相关目的:在应用的字符编码中指示字符数据格式错误,包含不构成字符的字节。当处理某些编码中的数据时,通常会发生这种情况,就好像它处于某种其他编码中一样。
所以“ ”并不是指“未知的角色”,更不是“无法表现的角色”。相反,它意味着“不是一个角色”。
答案 2 :(得分:1)
当原始数据中的字节序列与数据的字符集不匹配时,会出现问号,因此无法正确解码。如果数据格式错误,数据的字符集在HTTP标头或HTML本身中被明确说明不正确,浏览器在缺少其他信息时错误地猜测字符集,或者用户的浏览器设置覆盖了数据的字符集,则会发生这种情况。不相容的字符集。
当用于显示数据的字体中不存在已解码的字符时,会出现一个框。
答案 3 :(得分:-1)
正如它所说的 - 某些浏览器显示“奇怪的字符”或当前已知字符集之外的字符的问号。这是他们的“嘿,我不知道这是什么”这个角色。获取旧版本的Netscape,粘贴一些使用智能引号的Microsoft Word文本,你就会得到问号。