2012-03-01 40 views
9

我有一些包含一些外文字符的HTML(€,ó,á)。 HTML文档保存为不含BOM的UTF-8。当我在浏览器中查看页面时,外键字符似乎被陌生人字符组合(Ã,Ã,Ã,Ã)所取代。只有当我将HTML文档保存为带有BOM的UTF-8时,才能正确显示字符。没有BOM的UTF-8 html显示奇怪的字符

我真的不需要在我的文件中包含BOM,但有谁知道它为什么会这样做?并解决它的方法? (不包括BOM)

+1

请问HTML自身标识AddDefaultCharset UTF-8更多信息UTF-8编码? – 2012-03-01 15:07:36

+0

你是否在'meta'标签中指定了字符集? – 2012-03-01 15:07:43

+0

您是否已使用服务器和元标记来做适当的事情,以通知浏览器该内容实际上是UTF-8? – 2012-03-01 15:07:59

回答

14

您可能没有在HTML文件中指定正确的字符集。 BOM(谢谢@Jukka)将浏览器发送到UTF-.8模式;如果没有,则需要使用其他方法来声明文档UTF.8。

如果您有权访问服务器配置,则可能需要确保服务器未发送错误的字符集信息。见例如How to change the default encoding to UTF-8 for Apache?

如果只有你的HTML访问,将在文档的头部这个元标记应该做的伎俩:

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

或@Mathias指出,新的HTML 5

<meta charset="utf-8"> 

(仅当您使用HTML 5文档类型时,即使您没有使用HTML 5标记,对此也没有什么好论据。)

+5

+1。现在你可以使用''。 (如果你在2012年没有使用HTML5 DOCTYPE,那么你做错了。) – 2012-03-01 15:10:56

+0

@Mathias好点,补充,谢谢 – 2012-03-01 15:14:23

+0

这些症状表明浏览器测试实际上是在监听BOM:显然,服务器都不是文档本身声明编码,强制浏览器推断或猜测编码;似乎它需要一个BOM来指示UTF-8,这非常合理(并且在没有BOM的情况下,数据被视为iso-8859-1,windows-1252或类似的东西, ¬,³,ü东西)。 – 2012-03-01 15:53:40