我有几个PHP页面使用以下代码将各种内容回显到HTML页面中。
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
但是,当我使用W3C验证器进行验证时,它附带了:
HTTP标头(iso-8859-1)中指定的字符编码与元素(utf-8)中的值不同。
我对PHP还是很陌生,我想知道是否可以并且应该更改PHP文件的标头以匹配HTML文件。
我有几个PHP页面使用以下代码将各种内容回显到HTML页面中。
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
但是,当我使用W3C验证器进行验证时,它附带了:
HTTP标头(iso-8859-1)中指定的字符编码与元素(utf-8)中的值不同。
我对PHP还是很陌生,我想知道是否可以并且应该更改PHP文件的标头以匹配HTML文件。
Answers:
使用header
修改HTTP标头:
header('Content-Type: text/html; charset=utf-8');
请注意在将任何输出发送到客户端之前调用此函数。否则,标头也已发送,您显然无法再进行更改。您可以使用进行检查headers_sent
。有关更多信息,请参见的手册页header
。
META
当未通过HTTP加载HTML文档(例如从磁盘)时,使用等效于HTTP的协议。
首先,请确保PHP文件本身是UTF-8编码的。
某些浏览器会忽略meta标签。如果仅使用ASCII字符,则无所谓。
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
header('Content-Type: text/html; charset=utf-8');
Content-Type = "Content-Type" ":" media-type
和media-type = type "/" subtype *( ";" parameter )
为了实现正确的实施,您需要更改一系列内容。
数据库(连接后立即):
mysql_query("SET NAMES utf8");
// Meta tag HTML (probably it's already set):
meta charset="utf-8"
header php (before any output of the HTML):
header('Content-Type: text/html; charset=utf-8')
table-rows-charset (for each row):
utf8_unicode_ci
<meta>
标记。