某些UTF-8字符不会显示在浏览器上

时间:2009-09-09 10:05:11

标签: encoding character-encoding

一些UTF-8字符,如UTF-8等效于C2 96(连字符)。在浏览器上将其显示为(带有00 96的utf框)。而不是' - '(连字符)。这种行为的原因是什么?我们如何纠正这个?

http://stuffofinterest.com/misc/utf8.php?s=128(请参阅此网址以获取代码)

我发现这可以用html实体来处理。有没有办法在不转换为html实体的情况下显示它?

3 个答案:

答案 0 :(得分:5)

我怀疑这是因为U + 0080和U + 009F之间的字符是控制字符。我还有点惊讶的是,当他们直接在HTML中编码而不是使用实体时,他们的表现方式不同,但基本上你不应该使用它们来开始。 U + 0096不是真正的“连字符”,它是“守卫区域的开始”。

有关详细信息,请参阅U+0080-U+00FF code chart。基本上,尽量避免使用控制字符......

答案 1 :(得分:5)

你所谈论的角色是一个冲刺,而不是一个连字符。其Unicode代码点为U + 2013,其UTF-8编码为E2 80 93,而非C2 96。您链接的表格不正确。前两列与UCS-2或Unicode无关;它们实际上包含有问题字符的windows-1252编码。标有“UTF-8 Hex”和“UTF-8 Native”的列只是完全错误,至少对于标记为 128 159 的行。实体––表示en-dash,但UTF-8序列C2 96表示不可显示的控制字符。

无论如何,您不需要手动编码这些字符。只需告诉您的文本编辑器(或用于创建内容的任何内容)将文件保存为UTF-8。

答案 2 :(得分:1)

有两个原因浮现在脑海中:

  1. 您确定已向浏览器输出正确的字符代码吗?更好地检查一些十六进制查看器。
  2. 您使用的字体没有在此代码点定义的字形。