php网页抓取乱码(不是白忙乎了吗?????)
优采云 发布时间: 2021-09-25 21:34php网页抓取乱码(不是白忙乎了吗?????)
网上的解决方法是说抓取后用iconv()转码。看了之后觉得有一点不对:一是iconv库不一定是编译好的,更大的问题是编码跟流转换的时间有关(如果用iconv,PHP代码其实是转换了两次: stream -> UTF-8- > GB2312): 这不是白忙活吗?
仔细看了php文档(不知道大家代码是怎么写的,但是文档很清楚),上面提到的fopen()和file_get_contents()》默认是UTF-8,但是用户可以使用stream_default_encoding () 或用户定义的上下文属性更改编码”(如果启用 unicode 语义,则读取数据的默认编码为 UTF-8. 您可以通过创建自定义上下文或使用更改默认值来指定不同的编码stream_default_encoding().)。所以使用 stream_default_encoding('gb2312'); 测试:但是对于晕,这个功能不存在吗?!似乎只支持 php 6。但是没有办法,有“用户自定义上下文属性”可以用。
仔细阅读文档后,问题终于解决了:
复制代码代码如下:
//设置流的编码格式,这个是文件流(file),如果是网络访问,把文件改成http
$opts = array('file' => array('encoding' =>'gb2312'));
$ctxt = stream_context_create($opts);
file_get_contents(文件名,FILE_TEXT,$ctxt);