没有BOM的UTF-8 html显示奇怪的字符

Mat*_*ord 9 html byte-order-mark utf-8

我有一些HTML包含一些forign字符(€,ó,á).HTML文档保存为UTF-8,无BOM.当我在浏览器中查看页面时,forign字符似乎被替换为陌生字符组合(â€,ó,Ã).只有当我将HTML文档保存为带有BOM的UTF-8时,才能正确显示字符.

我真的不想在我的文件中包含BOM,但有人知道它为什么会这样做吗?以及解决它的方法?(除了包括BOM)

Pek*_*ica 16

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

如果您可以访问服务器配置,则可能需要确保服务器未发送错误的字符集信息.请参阅例如 如何将Apache的默认编码更改为UTF-8?

如果您只能访问HTML,那么在文档头部添加此元标记应该可以解决问题:

<meta http-equiv='Content-Type' content='Type=text/html; charset=utf-8'>
Run Code Online (Sandbox Code Playgroud)

或者@Mathias指出,新的HTML 5

<meta charset="utf-8"> 
Run Code Online (Sandbox Code Playgroud)

(仅当您使用HTML 5文档类型时才有效,即使您不使用HTML 5标记,也不再有好的参数.)

  • +1.现在你可以使用`<meta charset ="utf-8">`.(如果你在2012年没有使用HTML5 DOCTYPE,那你做错了.) (6认同)