我想简单地在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似乎仍然表示相同的内容类型。
答案 0 :(得分:51)
您应确保HTTP服务器标头正确无误。
特别是标题:
Content-Type: text/html; charset=utf-8
应该在场。
如果存在HTTP标头,则浏览器会忽略元标记。
同时确保您的文件在提供之前实际编码为UTF-8,请检查/尝试以下操作:
&#uuu;
。注意:如果您使用的unicode字符系统无法找到字形(没有该字符的字体),则浏览器应显示问号或某些块,如符号。但是,如果您看到多个罗马字符,则表示编码问题。
答案 1 :(得分:15)
我知道答案已被接受,但想指出一些事情。
设置content-type
和charset
显然是一种很好的做法,在服务器上执行它会好得多,因为它可以确保整个应用程序的一致性。
但是,只有在我的应用程序的语言使用了许多仅在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。