2009-09-09 93 views

回答

5

我怀疑这是因为U + 0080和U + 009F之间的字符是控制字符。我仍然有点惊讶,它们直接在HTML中进行编码比使用实体时显示的不同,但基本上不应该用它们开头。 U + 0096并非真正的“连字符”,而是“守卫区域的开始”。

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

+0

非常感谢。如果一个程序遇到这个问题,我们该如何处理?我已经通过Gmail试过了,它没有显示。它显示“守卫区域的开始”为' - ' 任何想法? – Krishna 2009-09-09 11:05:23

+0

你想如何处理这将取决于应用程序。您可能需要去除字符,或将它们替换为具有相似显示特性的另一个Unicode字符(例如,使用适当的连字符)。 – 2009-09-09 11:09:04

1

两个原因浮现在脑海中:

  1. 你确定你已经输出了正确的字符代码到浏览器?最好检查一下十六进制查看器。
  2. 您使用的字体没有在此代码点定义的字形。
+0

是的..字符代码是正确的。我已通过十六进制查看器进行检查。 – Krishna 2009-09-09 11:06:14

5

你说的字符是一个连字符,而不是连字符。它的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。

+0

我承认这不是连字符。但它绝对是一个UTF8字符。正如所建议的,http://unicode.org/charts/PDF/U0080.pdf表示该角色是“保卫区的开始”。它在与html实体一起使用时显示为连字符(–) – Krishna 2009-09-09 11:16:46

+2

不,实体“–”确实代表连字符。它基于windows-1252,因此在技术上不正确,但由于历史原因,浏览器支持它。根据Unicode代码点,en-dash的正确数字实体是'–'或'–'十六进制。 – 2009-09-09 13:09:41

+1

...或'–'...... – meshy 2013-06-29 09:22:37