获取网页源码编码问题,获取的网页如果是utf-8是正常的,获取网页如果是gb2312的会是乱码

hackft 2020-07-26 10:27:23
获取网页源码编码问题,获取的网页如果是utf-8是正常的,获取网页如果是gb2312的会是乱码,请问一下解决方法,我想让它不管获取网址的内容编码是什么,显示出来都是gb2312编码的内容
<?php
$real_url = str_ireplace('?','',strstr( $_SERVER['REQUEST_URI'],'?'));

$ch = curl_init();
$timeout = 10;
curl_setopt ($ch, CURLOPT_URL,$real_url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36');
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$html = curl_exec($ch);
echo $html;
...全文
397 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
苍穹0113 2020-07-29
  • 打赏
  • 举报
回复
引用 3 楼 hackft 的回复:
[quote=引用 1 楼 苍穹0113 的回复:]将文件的编码改为GBK,同时代码改为如下这样试试,希望可以帮助到你
<?php
$real_url = str_ireplace('?','',strstr( $_SERVER['REQUEST_URI'],'?'));

$ch = curl_init();
$timeout = 10;
curl_setopt ($ch, CURLOPT_URL,$real_url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36');
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$html = curl_exec($ch);
header("Content-type:text/html;charset=GBK");
echo iconv('GBK', 'UTF-8', $html);
谢谢你大神,你的写法我把倒数第二行改成了: header("Content-type:text/html;charset=UTF-8"); echo iconv('GBK', 'UTF-8', $html); 就可以了,但是如果获取的网站是UTF-8的,就不行了,是不是需要加一个判断,请教一下怎么写,因为我不会PHP[/quote] 您好,如果你代码文件是utf-8编码的就输出utf-8编码,如果遇到其他编码,然后利用iconv函数进行编码转换,转换成utf-8输出即可。 也可以参考PHP官方手册https://www.php.net/manual/zh/ref.mbstring.php
hackft 2020-07-29
  • 打赏
  • 举报
回复
引用 1 楼 苍穹0113 的回复:
将文件的编码改为GBK,同时代码改为如下这样试试,希望可以帮助到你
<?php
$real_url = str_ireplace('?','',strstr( $_SERVER['REQUEST_URI'],'?'));

$ch = curl_init();
$timeout = 10;
curl_setopt ($ch, CURLOPT_URL,$real_url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36');
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$html = curl_exec($ch);
header("Content-type:text/html;charset=GBK");
echo iconv('GBK', 'UTF-8', $html);
谢谢你大神,你的写法我把倒数第二行改成了: header("Content-type:text/html;charset=UTF-8"); echo iconv('GBK', 'UTF-8', $html); 就可以了,但是如果获取的网站是UTF-8的,就不行了,是不是需要加一个判断,请教一下怎么写,因为我不会PHP
hackft 2020-07-29
  • 打赏
  • 举报
回复
引用 1 楼 苍穹0113 的回复:
将文件的编码改为GBK,同时代码改为如下这样试试,希望可以帮助到你
<?php
$real_url = str_ireplace('?','',strstr( $_SERVER['REQUEST_URI'],'?'));

$ch = curl_init();
$timeout = 10;
curl_setopt ($ch, CURLOPT_URL,$real_url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36');
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$html = curl_exec($ch);
header("Content-type:text/html;charset=GBK");
echo iconv('GBK', 'UTF-8', $html);
你好,非常感谢,但是试了,显示的还是乱码
苍穹0113 2020-07-26
  • 打赏
  • 举报
回复
将文件的编码改为GBK,同时代码改为如下这样试试,希望可以帮助到你
<?php
$real_url = str_ireplace('?','',strstr( $_SERVER['REQUEST_URI'],'?'));

$ch = curl_init();
$timeout = 10;
curl_setopt ($ch, CURLOPT_URL,$real_url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36');
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$html = curl_exec($ch);
header("Content-type:text/html;charset=GBK");
echo iconv('GBK', 'UTF-8', $html);

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧