某些UTF-8字符,如C2 96(连字符)的UTF-8等效字符。在浏览器中,它显示为(utf box 00 96)。而不是' - '(连字符)。这种行为的任何原因?我们如何解决这个问题?某些UTF-8字符不显示在浏览器上
http://stuffofinterest.com/misc/utf8.php?s=128(请参阅此网址的代码)
我发现,这可以用HTML实体进行处理。有没有什么方法可以显示这个没有转换为HTML实体?
某些UTF-8字符,如C2 96(连字符)的UTF-8等效字符。在浏览器中,它显示为(utf box 00 96)。而不是' - '(连字符)。这种行为的任何原因?我们如何解决这个问题?某些UTF-8字符不显示在浏览器上
http://stuffofinterest.com/misc/utf8.php?s=128(请参阅此网址的代码)
我发现,这可以用HTML实体进行处理。有没有什么方法可以显示这个没有转换为HTML实体?
我怀疑这是因为U + 0080和U + 009F之间的字符是控制字符。我仍然有点惊讶,它们直接在HTML中进行编码比使用实体时显示的不同,但基本上不应该用它们开头。 U + 0096并非真正的“连字符”,而是“守卫区域的开始”。
有关更多信息,请参阅U+0080-U+00FF code chart。基本上,尽量避免控制字符...
两个原因浮现在脑海中:
是的..字符代码是正确的。我已通过十六进制查看器进行检查。 – Krishna 2009-09-09 11:06:14
你说的字符是一个连字符,而不是连字符。它的Unicode代码点是U + 2013,其UTF-8编码是E2 80 93
,而不是C2 96
。您链接的表格不正确。前两列与UCS-2或Unicode无关;它们实际上包含用于所讨论字符的windows-1252编码。标记为“UTF-8 Hex”和“UTF-8 Native”的列至少对于标记为至的行是错误的。实体–
和–
代表连字符,但UTF-8序列代表不可显示的控制字符。
无论如何您都不需要手动对这些字符进行编码。只要告诉你的文本编辑器(或者你用来创建内容的任何东西),将文件保存为UTF-8。
我承认这不是连字符。但它绝对是一个UTF8字符。正如所建议的,http://unicode.org/charts/PDF/U0080.pdf表示该角色是“保卫区的开始”。它在与html实体一起使用时显示为连字符() – Krishna 2009-09-09 11:16:46
不,实体“”确实代表连字符。它基于windows-1252,因此在技术上不正确,但由于历史原因,浏览器支持它。根据Unicode代码点,en-dash的正确数字实体是'–'或'–'十六进制。 – 2009-09-09 13:09:41
...或'–'...... – meshy 2013-06-29 09:22:37
非常感谢。如果一个程序遇到这个问题,我们该如何处理?我已经通过Gmail试过了,它没有显示。它显示“守卫区域的开始”为' - ' 任何想法? – Krishna 2009-09-09 11:05:23
你想如何处理这将取决于应用程序。您可能需要去除字符,或将它们替换为具有相似显示特性的另一个Unicode字符(例如,使用适当的连字符)。 – 2009-09-09 11:09:04