所以我在我的网站上注意到unicode字符不会显示,它们都显示为问号。我有这条线:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
检查w3c验证器后,它也显示为UTF-8,但它仍然不起作用。解决方案?删除该行!我不明白为什么这与它应该如何相反。例如,如果您继续该页面:
http://tideart.com/?id=4eb78742
我输入了一些unicode文本,它在任何浏览器中显示都很好,但没有字符集行。如果我要添加上面的行,那么所有这些unicode字符都会变为?。
如果您现在在w3c验证器上检查页面,它实际上是这样说的:
在默认为windows-1252之前,验证器也试图读取 具有以下编码的内容,但未成功:UTF-8。
该文本最初是通过两种不同的方式输入的。以UTF8格式保存的HTML表单和文本文件。所以我不明白为什么“utf-8”失败如此可怕,但如果我真的指定了一个“windows-1252”的字符集,它也可以工作。
任何人都想知道发生了什么事?
答案 0 :(得分:1)
我很确定该页面是使用ISO 8859-1编码的。如果我使用UTF-8,我会得到可怕的问号钻石字形:
kljkjkjk
勒franais法国,APPEL parfois franais mtropolitain OU franais六边形OU安可franais规范,EST LA varit国立德拉索绪尔franaise appartenant LA法国。 Dans le contexte des comparaisons entrevari t sationsalements,on a hamp habituellement au fran aisstandardde France
但如果我使用ISO 8859-1,则以下内容:
€kljkjkjk
勒的问题法国,appeléparfois法语METROPOLITAIN OU的问题六边形鸥安可法语normé,EST LA综艺国立德拉索绪尔法语appartenant点菜法国。 Dans le contexte des comparaisonsentrevariétésnationalales,on pense habituellement au«françaisstandardde France»
如果你告诉浏览器你的文件是用UTF-8编码的,但它实际上是ISO 8859-1那么你会有点乱。如果您没有指定字符集,那么浏览器将进行猜测或使用其默认值;在我的情况下,默认值是UTF-8,所以默认情况下我弄得一团糟,并强迫我的浏览器使用ISO 8859-1排序。
答案 1 :(得分:1)
这里有一些严重的混淆: - )。
您可以使用Firebug(在Firefox中)或curl -v
等工具下载页面并查看标题。服务器回复是:
HTTP/1.1 200 OK
Date: Mon, 07 Nov 2011 07:59:34 GMT
Server: Apache
Vary: Accept-Encoding
Content-Length: 9659
Content-Type: text/html
如您所见,Content-Type
标题不指定编码(这是错误的)。在这种情况下,浏览器会尝试猜测。您的页面在发生时似乎编码为ISO-8859-1,这是大多数浏览器中的第一个默认设置,因此它可以正常工作。
如果您将“UTF-8”放入META标题,浏览器会相信您,但显示垃圾(因为该文件位于ISO-8859-1中)。
要解决此问题,请将服务器配置为使用Content-Type
标头发送正确的编码。此外,您还可以将编码放入META标记中 - 但请确保它确实匹配。
在这种情况下的规则是:
答案 2 :(得分:1)
仅将字符集设置为UTF8是不够的,您还必须将页面保存为utf8(配置文本编辑器)。