首页 文章

使用PHP将HTTP标头设置为UTF-8

提问于
浏览
291

我有几个PHP页面使用以下代码回显HTML页面中的各种内容 .

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

但是,当我使用W3C validator进行验证时,它会出现:

HTTP标头(iso-8859-1)中指定的字符编码与元素(utf-8)中的值不同 .

我是PHP的新手,我想知道我是否可以并且应该更改PHP文件的标头以匹配HTML文件 .

6 回答

  • 3

    如果设置内部编码,PHP会自动发送标头

    ini_set('default_charset', 'utf-8');
    
  • 10

    为了正确实现,您需要更改一系列内容 .

    数据库 . (连接后立即):

    mysql_query("SET NAMES utf8");
    //Meta tag HTML.(probably its 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
    
  • 14

    首先确保PHP文件本身是UTF-8编码的 .

    某些浏览器会忽略元标记 . 如果您只使用ASCII字符,那么无论如何都无关紧要 .

    http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

    header('Content-Type: text/html; charset=utf-8');
    
  • 834

    使用header修改HTTP标头:

    header('Content-Type: text/html; charset=utf-8');
    

    注意在将任何输出发送到客户端之前调用此函数 . 否则 Headers 也已发送,您显然无法再更改它 . 您可以使用headers_sent进行检查 . 有关更多信息,请参阅manual page of header .

  • 31

    您也可以使用更短的方式:

    <?php header('Content-Type: charset=utf-8'); ?>
    

    请参阅RFC 2616,其有效仅指定字符集 .

  • 7

    这是您的Web服务器发送的HTTP标头与您定义的HTTP标头不匹配的问题 . 有关如何使服务器发送正确标头的说明,请参阅this page .

    否则,您也可以使用PHP来修改 Headers ,但必须在使用此代码输出任何文本之前完成此操作:

    header('Content-Type: text/html; charset=utf-8');
    

    有关如何使用PHP发送标头的更多信息,请参见the documentation for the header function .

相关问题