man*_*ese 307 html php http-headers
我有几个PHP页面使用以下代码将各种内容回显到HTML页面中.
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)
但是,当我使用W3C验证器验证时,它会出现:
HTTP标头(iso-8859-1)中指定的字符编码与元素(utf-8)中的值不同.
我是PHP的新手,我想知道我是否可以并且应该更改PHP文件的标头以匹配HTML文件.
Gum*_*mbo 872
使用header
修改HTTP标头:
header('Content-Type: text/html; charset=utf-8');
Run Code Online (Sandbox Code Playgroud)
注意在将任何输出发送到客户端之前调用此函数.否则标题也已发送,您显然无法再更改它.你可以检查一下headers_sent
.有关更多信息,请参见手册页header
.
Kin*_*nch 32
首先确保PHP文件本身是UTF-8编码的.
某些浏览器会忽略元标记.如果你只使用ASCII字符,那么无论如何都没关系.
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
header('Content-Type: text/html; charset=utf-8');
Run Code Online (Sandbox Code Playgroud)
Edo*_*odo 15
这是您的Web服务器发送的HTTP标头与您定义的HTTP标头不匹配的问题.有关如何使服务器发送正确标头的说明,请参阅此页面.
否则,您也可以使用PHP来修改标题,但必须在使用此代码输出任何文本之前完成此操作:
header('Content-Type: text/html; charset=utf-8');
Run Code Online (Sandbox Code Playgroud)
有关如何使用PHP发送标头的更多信息可以在头文件功能的文档中找到.
Jas*_*OOO 12
您也可以使用更短的方式:
<?php header('Content-Type: charset=utf-8'); ?>
Run Code Online (Sandbox Code Playgroud)
请参阅RFC 2616,其有效仅指定字符集.
小智 10
为了正确实现,您需要更改一系列内容.
数据库.(连接后立即):
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
Run Code Online (Sandbox Code Playgroud)
小智 6
如果设置为使用内部编码,则PHP自动发送标头:
ini_set('default_charset', 'utf-8');
Run Code Online (Sandbox Code Playgroud)