我有一个用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"/>
并打开了文件,显示确定。
所以,我的问题是:这行代码是什么意思?
答案 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);
另见: