最近在使用phpQuer采集一个网站搜索结果的时候发现是乱码,这里是采集搜索中文的结果内容乱码,英文的结果内容返回的是正常的,并且只有内容页的时候才会乱码,采集title居然是正常的很奇怪。phpQuer似乎并没有说到如何自定义设置编码,网上搜了一下大致原因就是phpQuer在采集内容的时候是自己通过mb_detect_encoding检查编码,但是这个是不准确的尤其是一些非英文的网站,mb_detect_encoding和documentCharset会进行对比检查不到用的是ISO-8859-1,这大概应该是乱码的原因。
按照网上的解决方法设置phpQuery::$defaultCharset="编码"对我来说不起作用,设置 mb_convert_encoding($content,'ISO-8859-1','utf-8')和mb_convert_encoding($content,'utf-8','GBK')也无效,最终结果方法是全部uft8,mb_convert_encoding($content,'utf-8'),即:
1 | $content = mb_convert_encoding($content,'utf-8') |
OK成功!