代码之家  ›  专栏  ›  技术社区  ›  xmxmxmx

如何判断PHP是否输出UTF8

  •  0
  • xmxmxmx  · 技术社区  · 7 年前

    我有以下代码在PHP文件中生成PHP utf8

    mb_regex_encoding('UTF-8');
    mb_internal_encoding('UTF-8');
    

    标题中有以下内容

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

    我正在使用CURL获取一页

    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
    

    这有一些wierd字符,引号和双引号显示为–

    我发现这可以正确输出字符串,但html实体显示为 ? 标志。

    utf8_decode($str);
    

    这意味着我的页面实际上没有以utf8输出。。我正在使用firefox,如何解决此问题?!使页面完全兼容utf8(理想),或删除html实体。

    我尝试使用utf8\U解码之前的替换,但它会弄乱输出

    $str = htmlentities($str,ENT_SUBSTITUTE,'UTF-8');
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Nathanael    7 年前

    在大多数情况下 mb_detect_encoding($str) 将告诉您变量的编码是什么。

    您可能还想签出标题

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

    现在,在卷曲请求中,您正在设置 curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); 现在该设置的有效选项是“identity”、“deflate”或“gzip”,UTF-8不在列表中, 因此,请删除该行,然后检测接收内容的编码,然后使用以下函数相应地转换编码 mb_convert_encoding()