php网页抓取乱码(不是白忙乎了吗?????)

优采云 发布时间: 2021-09-25 21:34

  php网页抓取乱码(不是白忙乎了吗?????)

  网上的解决方法是说抓取后用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);

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线