在HTML中显示unicode符号

时间:2009-11-08 13:42:41

标签: html unicode

我想简单地在HTML页面中显示刻度线(✔)和交叉(✘)符号,但它显示为框或goop“ - 显然与编码有关。

我已将元标记设置为显示utf-8,但显然我错过了一些东西。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

编辑/解决方案:根据发表的评论,使用FireBug我发现我的页面传递的标题实际上是“Content-Type:text / html”而不是UTF-8。使用Notepad ++查看文件格式显示我的文件格式为“没有BOM的UTF-8”。将此更改为UTF-8,符号现在可以正确显示...但是firebug似乎仍然表示相同的内容类型。

5 个答案:

答案 0 :(得分:51)

您应确保HTTP服务器标头正确无误。

特别是标题:

Content-Type: text/html; charset=utf-8

应该在场。

如果存在HTTP标头,则浏览器会忽略元标记。

同时确保您的文件在提供之前实际编码为UTF-8,请检查/尝试以下操作:

  • 确保您的编辑器将其保存为UTF-8。
  • 确保您的FTP或任何文件传输程序不会弄乱文件。
  • 尝试使用HTML编码的实体,例如&#uuu;
  • 要确定,hexdump文件并看作是角色,对于✔,它应该是E2 9C 94。

注意:如果您使用的unicode字符系统无法找到字形(没有该字符的字体),则浏览器应显示问号或某些块,如符号。但是,如果您看到多个罗马字符,则表示编码问题。

答案 1 :(得分:15)

我知道答案已被接受,但想指出一些事情。

设置content-typecharset显然是一种很好的做法,在服务器上执行它会好得多,因为它可以确保整个应用程序的一致性。

但是,只有在我的应用程序的语言使用了许多仅在UTF-8字符集中可用的字符时,我才会使用UTF-8。如果您想在其中一个案例中显示unicode字符或符号,则可以在不更改页面charset的情况下执行此操作。

HTML渲染器始终能够显示不属于页面编码字符集的符号,只要您在其numeric character reference (NCR)中提及该符号即可。听起来很奇怪,但确实如此。

因此,即使您的html有一个表示其编码为ansi或任何iso字符集的标头,您也可以使用其html字符显示复选标记参考,十进制 - &amp;#10003;或者以十六进制表示 - &amp;#x2713;

所以有点难以理解您在网页上遇到此问题的原因。你能检查NCR值是否正确,这是一个很好的参考http://www.fileformat.info/info/unicode/char/2713/index.htm

答案 2 :(得分:5)

确保您实际将文件保存为UTF-8,或者使用HTML实体(&#nnn;)作为特殊字符。

答案 3 :(得分:5)

与Nicolas提出的不同,浏览器实际上并未忽略meta标记。但是,Content-Type HTTP标头始终优先于文档中meta标记的存在。

因此,请确保您通过HTTP标头发送正确的编码,或者根本不发送此HTTP标头(不推荐)。 meta标记主要是本地文档的后备选项,不通过HTTP流量发送。

使用HTML实体也应该被视为一种解决方法 - 这是针对真正问题的悄悄话。正确配置Web服务器可以防止很多麻烦。

答案 4 :(得分:0)

我认为这是一个文件问题,您可以简单地将文件保存为1字节编码,如latin-1。谷歌编辑器以及如何将文件设置为utf-8。

我想知道为什么编辑器没有默认为utf-8。