我想简单地在 HTML 页面中显示勾号 (✔) 和叉号 (✘) 符号,但它显示为一个框或粘稠的 ✠- 显然与编码有关。
我已将元标记设置为显示 utf-8 但显然我遗漏了一些东西。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
编辑/解决方案:从评论中,使用FireBug我发现我的页面传递的标头实际上是“Content-Type:text/html”而不是UTF-8。使用 Notepad++ 查看文件格式显示我的文件格式为“UTF-8 without BOM”。将其更改为 UTF-8 符号现在可以正确显示...但 firebug 似乎仍然指示相同的内容类型。
您应该确保 HTTP 服务器标头正确。
特别是标题:
Content-Type: text/html; charset=utf-8
应该存在。
如果存在 HTTP 标头,浏览器会忽略元标记。
还要确保您的文件在提供之前实际上已编码为 UTF-8,请检查/尝试以下操作:
&#uuu;
。注意:如果您使用系统无法找到其字形的 unicode 字符(没有带有该字符的字体),则您的浏览器应显示问号或某些块状符号。但如果您像您一样看到多个罗马字符,则表示存在编码问题。
我知道答案已被接受,但想指出一些事情。
设置
content-type
和 charset
显然是一个很好的做法,在服务器上进行要好得多,因为它可以确保整个应用程序的一致性。
但是,只有当我的应用程序的语言使用大量仅在
UTF-8
字符集中可用的字符时,我才会使用 UTF-8
。如果您想在其中一种情况下显示 unicode 字符或符号,则无需更改页面的 charset
即可实现。
HTML
渲染器始终能够显示不属于页面编码字符集的符号,只要您在其numeric character reference (NCR)
中提及该符号即可。听起来很奇怪,但这是真的。
因此,即使您的
html
的标头声明其具有 ansi
编码或任何 iso
字符集,您也可以使用其 html 字符引用(以十进制 - ✓ 或以十进制形式显示复选标记)十六进制 - ✓
因此有点难以理解为什么您在页面上面临这个问题。你能检查一下NCR值是否正确,这是一个很好的参考http://www.fileformat.info/info/unicode/char/2713/index.htm
确保您确实将文件保存为 UTF-8,或者使用 HTML 实体 (
&#nnn;
) 来表示特殊字符。
与 Nicolas 提出的不同,浏览器实际上并没有忽略
meta
标签。但是,Content-Type
HTTP 标头始终优先于文档中存在的 meta
标记。
因此请确保您通过 HTTP 标头发送正确的编码,或者根本不发送此 HTTP 标头(不推荐)。
meta
标签主要是不通过 HTTP 流量发送的本地文档的后备选项。
使用 HTML 实体也应该被视为一种解决方法——这是小心翼翼地绕过真正的问题。正确配置网络服务器可以防止很多麻烦。
我认为这是一个文件问题,您只需将文件保存为 1 字节编码(例如 latin-1)即可。谷歌搜索你的编辑器以及如何将文件设置为 utf-8。
我想知道为什么有些编辑器不默认使用 utf-8。
晚了几年 - 只是为了澄清答案中遗漏的一些内容,以防有人想知道为什么他们的 unicode 编码仍然不起作用。
&#uuuu;中的uuuu是十进制数:不是十六进制数。如果您查找支票和交叉,您可能会发现网站会说是 2713 和 2717。 ઙ 会给您 ઙ ,ઝ 会给您 ઝ
拿出一个十六进制计算器并计算出十进制等值。
2713 hex = 10003 decimal
2717 hex = 10007 decimal
使用 ✓ 得到 ✓,使用 ✗ 得到 ✗