这是你的使用方法不当造成的
phpQuery 是利用 DOMDocument 做 HTML 解析的
而 DOMDocument::loadHTML 方法在载入 HTML 数据时,会根据文档中的 <meta http-equiv="Content-Type" content="text/html; charset=XXX"> 标记来识别文档的字符集。
如果文档中没有这个标记,则取默认字符集 ISO-8859-1因此,如果待处理的内容没有字符集声明标记时,应自己附加上去
设 $html 为待分析的内容,则
if(! preg_match('/<meta[^>]+charset=/i', $html)) {
$charset = mb_check_encoding($html, 'utf-8') ? 'utf-8' : 'gbk';
$html = sprintf('<meta http-equiv="Content-Type" content="text/html; charset=%s">%s', $charset, $html);
}
再给 phpQuery 处理就没有问题了当然,你也可以整体的转换成 utf-8 编码的