HTML内容类型元标记(utf8)

时间:2014-02-09 14:24:09

标签: php html encoding utf-8 doctype

我有一个用ANSI编码的html文件。如果我尝试浏览它,我会得到不可理解的字符,如问号。 我试着把这个标签:

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

但它并没有改变任何事情。

我将文件转换为utf-8并再次尝试,瞧,它有效。

所以我删除了上面的行:<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>并打开了文件,显示确定。

所以,我的问题是:这行代码是什么意思?

1 个答案:

答案 0 :(得分:1)

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  • http-equiv属性为内容的信息/值提供HTTP标头 属性。
  • content属性提供与http-equiv或name属性关联的值。
  • charset属性指定HTML文档的字符编码。

实际上,上述<meta>声明将指示浏览器拥有text/html类型的文档,其字符集设置为UTF-8。

如果Content-Type标头已经通过HTTP提供,那么包含元声明不会产生太大的影响。也就是说,除了用户覆盖之外,真正的HTTP头优先于所有内容(UTF BOM是一个例外)。 charset属性仅用作回退,仅在使用HTTP标头中指定的字符集解码的文档失败时才会使用。

请注意,如果文件未保存为UTF-8,则无意义。仅当文件保存为UTF-8时,charset才有效。要将其保存为UTF-8,您只需在文件的最开头添加字节顺序标记(BOM):

$contents = file_get_contents('yourFile.ext');
file_put_contents($your_file, "\xEF\xBB\xBF".$content); 

另见: