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

Kri*_*hna 4 encoding character-encoding

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

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

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

Jon*_*eet 5

我怀疑这是因为U + 0080和U + 009F之间的字符是控制字符.我还是微微一惊,他们表现出不同的时,在HTML比使用实体直接编码,但基本上你不应该使用它们下手.U + 0096不是真正的"连字符",它是"守卫区域的开始".

有关更多信息,请参阅U + 0080-U + 00FF代码表.基本上,尽量避免控制字符......


Ala*_*ore 5

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

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

  • 不,实体`–`确实代表了一个短划线.它基于Windows-1252,因此在技术上是不正确的,但浏览器由于历史原因支持它.en-dash的正确数字实体,基于其Unicode代码点,是`–`或`–`hex. (2认同)