
php网页抓取乱码
php网页抓取乱码(《PHP视频教程》抓取乱码的解决办法:这样乱码解决方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 77 次浏览 • 2021-12-01 22:05
php网页抓取乱码的解决方法:1、使用“mbconvertencoding”进行编码转换; 2、添加"curl_setopt($ch, CURLOPT_ENCODING,'gzip');"选项; 3、在顶部添加标题代码。
推荐:《PHP 视频教程》
php抓取页面乱码
在抓取页面时出现类似...的乱码,解决方法如下
1、转换码
str=mbconvertencoding(str, “utf-8”, “GBK”);
2、数据被gzip压缩
curl 获取数据时,设置并添加以下选项:
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
需要安装zlib库才能使用file_get_contents函数
$data = file_get_contents("compress.zlib://".$url);
3、获取数据后显示乱码
在顶部添加以下代码
header("Content-type: text/html; charset=utf-8");
以上就是解决php网页乱码爬取问题的详细内容。更多详情请关注其他相关php中文网站文章!
免责声明:本文由原创发表于php中文网。转载请注明出处。感谢您的尊重!如果您有任何问题,请联系我们 查看全部
php网页抓取乱码(《PHP视频教程》抓取乱码的解决办法:这样乱码解决方法)
php网页抓取乱码的解决方法:1、使用“mbconvertencoding”进行编码转换; 2、添加"curl_setopt($ch, CURLOPT_ENCODING,'gzip');"选项; 3、在顶部添加标题代码。

推荐:《PHP 视频教程》
php抓取页面乱码
在抓取页面时出现类似...的乱码,解决方法如下
1、转换码
str=mbconvertencoding(str, “utf-8”, “GBK”);
2、数据被gzip压缩
curl 获取数据时,设置并添加以下选项:
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
需要安装zlib库才能使用file_get_contents函数
$data = file_get_contents("compress.zlib://".$url);
3、获取数据后显示乱码
在顶部添加以下代码
header("Content-type: text/html; charset=utf-8");
以上就是解决php网页乱码爬取问题的详细内容。更多详情请关注其他相关php中文网站文章!

免责声明:本文由原创发表于php中文网。转载请注明出处。感谢您的尊重!如果您有任何问题,请联系我们
php网页抓取乱码(php网页抓取乱码的解决办法��这样解决方法!)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2021-12-01 22:03
php网页抓取乱码的解决方法?这个问题在我们日常的学习或工作中可能会经常看到。希望这个问题能给你带来很多收获。以下是小编给大家带来的参考内容,一起来看看吧!
php网页抓取乱码的解决方法:1、使用“mbconvertencoding”进行编码转换;2、 设置为添加“curl_setopt($ch, CURLOPT_ENCODING,'gzip');” 选项; 3、 在顶部添加标题代码。
php抓取页面乱码
抓取页面时,出现如下乱码。解决方法如下
1、转换码
str=mbconvertencoding(str, “utf-8”, “GBK”);
2、数据通过gzip压缩
当 curl 获取数据时,设置并添加以下选项:
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
使用file_get_contents函数需要安装zlib库
$data = file_get_contents("compress.zlib://".$url);
3、 获取数据后显示乱码
在顶部添加以下代码
header("Content-type: text/html; charset=utf-8");
感谢您的阅读!看完以上内容,你对php网页乱码爬取的解决方法有大致的了解了吗?希望文章的内容对大家有帮助。如果您想了解更多文章内容,欢迎关注易速云行业资讯频道。 查看全部
php网页抓取乱码(php网页抓取乱码的解决办法��这样解决方法!)
php网页抓取乱码的解决方法?这个问题在我们日常的学习或工作中可能会经常看到。希望这个问题能给你带来很多收获。以下是小编给大家带来的参考内容,一起来看看吧!
php网页抓取乱码的解决方法:1、使用“mbconvertencoding”进行编码转换;2、 设置为添加“curl_setopt($ch, CURLOPT_ENCODING,'gzip');” 选项; 3、 在顶部添加标题代码。

php抓取页面乱码
抓取页面时,出现如下乱码。解决方法如下
1、转换码
str=mbconvertencoding(str, “utf-8”, “GBK”);
2、数据通过gzip压缩
当 curl 获取数据时,设置并添加以下选项:
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
使用file_get_contents函数需要安装zlib库
$data = file_get_contents("compress.zlib://".$url);
3、 获取数据后显示乱码
在顶部添加以下代码
header("Content-type: text/html; charset=utf-8");
感谢您的阅读!看完以上内容,你对php网页乱码爬取的解决方法有大致的了解了吗?希望文章的内容对大家有帮助。如果您想了解更多文章内容,欢迎关注易速云行业资讯频道。
php网页抓取乱码(1.PHP页面语言本身的编码类型不合适,怎么办)
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2021-12-01 00:14
原因:1.PHP页面语言本身的编码类型不合适。这时候你直接在脚本里写的中文肯定是乱码,更别说数据库了;
解决方法:选择'UTF8'或'gb2312',这样客户端浏览器会自动选择并显示正确的中文显示。注意:'UTF8'或'gb2312'可以正确显示中文。
2. 数据库MySQL中的编码类型不正确。
解决方法:创建数据库时,MySQL字符集选择'UTF8',MySQL连接校对选择utf8_general_ci,这样创建存储中文的数据库就没有问题了。
否则你的中文会先在MySQL中出现乱码,别指望在PHP页面上为你正确显示。
3. 与通常的脚本编辑环境有关。比如有些内容是用Word写的,有些是用记事本写的,还有一些是用editplus、ultraplus等文本编辑器写的。有时我直接在DW里写中文,
如果你没有以这种方式得到乱码就很奇怪了。
解决方案:尝试使用相同的编辑器。如果复制现有内容,建议使用ultraplus中的代码转换功能,将其转换为utf8或gb2312。
转换成什么类型无所谓,关键是你的PHP WEB应用中的编码必须一致。
4.以编程方式访问MySQL时,建议添加一行代码:mysql_query("SET NAMES'GBK'"); 查看全部
php网页抓取乱码(1.PHP页面语言本身的编码类型不合适,怎么办)
原因:1.PHP页面语言本身的编码类型不合适。这时候你直接在脚本里写的中文肯定是乱码,更别说数据库了;
解决方法:选择'UTF8'或'gb2312',这样客户端浏览器会自动选择并显示正确的中文显示。注意:'UTF8'或'gb2312'可以正确显示中文。
2. 数据库MySQL中的编码类型不正确。
解决方法:创建数据库时,MySQL字符集选择'UTF8',MySQL连接校对选择utf8_general_ci,这样创建存储中文的数据库就没有问题了。
否则你的中文会先在MySQL中出现乱码,别指望在PHP页面上为你正确显示。
3. 与通常的脚本编辑环境有关。比如有些内容是用Word写的,有些是用记事本写的,还有一些是用editplus、ultraplus等文本编辑器写的。有时我直接在DW里写中文,
如果你没有以这种方式得到乱码就很奇怪了。
解决方案:尝试使用相同的编辑器。如果复制现有内容,建议使用ultraplus中的代码转换功能,将其转换为utf8或gb2312。
转换成什么类型无所谓,关键是你的PHP WEB应用中的编码必须一致。
4.以编程方式访问MySQL时,建议添加一行代码:mysql_query("SET NAMES'GBK'");
php网页抓取乱码(出现乱码的原因分析及解决方法有哪些呢?(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2021-11-30 15:08
一、乱码原因分析
1.保存文件时,文件有自己的文件编码,是汉字还是其他语言,用什么编码来存储
2.输出时,指定内容的编码,如以网页形式输入时
3.从数据库中取数据时,不确定数据库和字符集
4、以汉字为例。汉字也被编码。一个汉字 gbk 需要两个字符,而 utf8 需要三个字符。
可能导致乱码的潜在原因上面已经说了,我现在整理一下。
第一种情况,保存的文件和显示代码不一致
如果保存文件时使用utf8编码,则输出网页时设置了gbk编码,所以会出现乱码。
第二种情况,保存的文件和数据库中存储的字符不一致
假设,当保存的文件的编码与网页显示的编码相同时,仍然出现乱码。例如,当您保存文件时,您使用 utf8 编码,而您的数据库使用 gb2312 字符集来存储数据。
第三种情况,代码乱码,你还觉得没有
当你发现乱码的时候,当你改变保存文件的编码时,utf8的情况就好了。改成gbk会乱码,但是你觉得还好。这也是出现乱码的原因。这种情况会经常发生。
第四种情况,数据库天生乱码
数据的字符集,保存文件的编码,网页显示的编码都是一样的,但是出现乱码。大多数情况下,当数据进入数据库时,会出现乱码。这种情况比较麻烦。
2.我的解决乱码的方法不尽人意。
我把这个方法命名为泡顶解牛法。哈哈。数据库,保存文件编码,显示时编码必须一致,以数据库为准
首先是数据库和保存文件的编码是utf8,网页显示是gb2312。这时候我们需要改变显示编码
二是数据库和网页显示都是utf8,文件使用gb2312保存。这时候就要注意一个。无法直接更改保存文件的编码。在更改编码之前,请先更改文件的内容。COPY,改编码后,把COPY的内容贴回去,就OK了。
第三种是数据库使用的utf8。保存文件和显示的编码是gb2312。这时候就可以利用程序的功能,对从数据库中检索到的数据进行转码,将utf8转为gb2312,这样就不用改了。文件本身的编码已更改,并且已显示编码。以php为例,mb_convert_encoding($string,"gb2312","utf8");
第四种,数据库中的乱码,是在数据录入时,数据本身与数据库的存储码不同造成的。例如:数据库的存储代码是utf8,当数据存储在数据库中时,添加一个mysql_query("set names utf8;");
三、乱码表现的情况
乱码的表现,我遇到过两个,
1)是字体中出现的乱码,变成了奇怪的字符
2) 只是一个空白页。检查源代码时,什么都没有。在这种情况下,有时,我认为它是由乱码引起的。页面右击,查看属性,修改代码就知道是不是乱码导致的空白页。 查看全部
php网页抓取乱码(出现乱码的原因分析及解决方法有哪些呢?(图))
一、乱码原因分析
1.保存文件时,文件有自己的文件编码,是汉字还是其他语言,用什么编码来存储
2.输出时,指定内容的编码,如以网页形式输入时
3.从数据库中取数据时,不确定数据库和字符集
4、以汉字为例。汉字也被编码。一个汉字 gbk 需要两个字符,而 utf8 需要三个字符。
可能导致乱码的潜在原因上面已经说了,我现在整理一下。
第一种情况,保存的文件和显示代码不一致
如果保存文件时使用utf8编码,则输出网页时设置了gbk编码,所以会出现乱码。
第二种情况,保存的文件和数据库中存储的字符不一致
假设,当保存的文件的编码与网页显示的编码相同时,仍然出现乱码。例如,当您保存文件时,您使用 utf8 编码,而您的数据库使用 gb2312 字符集来存储数据。
第三种情况,代码乱码,你还觉得没有
当你发现乱码的时候,当你改变保存文件的编码时,utf8的情况就好了。改成gbk会乱码,但是你觉得还好。这也是出现乱码的原因。这种情况会经常发生。
第四种情况,数据库天生乱码
数据的字符集,保存文件的编码,网页显示的编码都是一样的,但是出现乱码。大多数情况下,当数据进入数据库时,会出现乱码。这种情况比较麻烦。
2.我的解决乱码的方法不尽人意。
我把这个方法命名为泡顶解牛法。哈哈。数据库,保存文件编码,显示时编码必须一致,以数据库为准
首先是数据库和保存文件的编码是utf8,网页显示是gb2312。这时候我们需要改变显示编码
二是数据库和网页显示都是utf8,文件使用gb2312保存。这时候就要注意一个。无法直接更改保存文件的编码。在更改编码之前,请先更改文件的内容。COPY,改编码后,把COPY的内容贴回去,就OK了。
第三种是数据库使用的utf8。保存文件和显示的编码是gb2312。这时候就可以利用程序的功能,对从数据库中检索到的数据进行转码,将utf8转为gb2312,这样就不用改了。文件本身的编码已更改,并且已显示编码。以php为例,mb_convert_encoding($string,"gb2312","utf8");
第四种,数据库中的乱码,是在数据录入时,数据本身与数据库的存储码不同造成的。例如:数据库的存储代码是utf8,当数据存储在数据库中时,添加一个mysql_query("set names utf8;");
三、乱码表现的情况
乱码的表现,我遇到过两个,
1)是字体中出现的乱码,变成了奇怪的字符
2) 只是一个空白页。检查源代码时,什么都没有。在这种情况下,有时,我认为它是由乱码引起的。页面右击,查看属性,修改代码就知道是不是乱码导致的空白页。
php网页抓取乱码(php网页抓取乱码原因解决办法:本文用大白话把)
网站优化 • 优采云 发表了文章 • 0 个评论 • 56 次浏览 • 2021-11-26 02:01
php网页抓取乱码原因解决办法:本文用大白话把php网页抓取怎么乱码解决方法简单说一下。php没有设置网页地址,只有编码,网页编码方式分为utf-8和gbk。虽然utf-8保证页面数据不变但乱码是在所难免的。1.实在解决不了的给你封个类库啊,比如wtftpbbrl之类,我用的是东秦开源的。2.抓取有了乱码,但是你可以去上百度对应的网页看看别人是怎么写的。一般别人是什么编码就怎么编码。eg:utf-8编码方式下抓取的例子:。然后你就明白乱码的原因了。
先搞清楚是什么问题,看看是否可以解决。另外,编码问题是gbk,非utf-8。通过strncpy("gbk",self,true)或者encode("gbk",self,gbk);encode("utf-8",self,gbk)。如果都没用,这个网站可能是bbs,就只能祈祷它能换上好的编码吧。
买个好点的路由器,设置好网络,防火墙,
买一个笔记本路由器,支持ssl或者https协议,对应web不同的响应,
php脚本乱码属于mime类型的byte字符串转换造成的问题,通常需要修改配置文件/etc/httpd/server/下,修改mime类型相关的地址处理为encodingencodeed,关闭url重定向(useragent), 查看全部
php网页抓取乱码(php网页抓取乱码原因解决办法:本文用大白话把)
php网页抓取乱码原因解决办法:本文用大白话把php网页抓取怎么乱码解决方法简单说一下。php没有设置网页地址,只有编码,网页编码方式分为utf-8和gbk。虽然utf-8保证页面数据不变但乱码是在所难免的。1.实在解决不了的给你封个类库啊,比如wtftpbbrl之类,我用的是东秦开源的。2.抓取有了乱码,但是你可以去上百度对应的网页看看别人是怎么写的。一般别人是什么编码就怎么编码。eg:utf-8编码方式下抓取的例子:。然后你就明白乱码的原因了。
先搞清楚是什么问题,看看是否可以解决。另外,编码问题是gbk,非utf-8。通过strncpy("gbk",self,true)或者encode("gbk",self,gbk);encode("utf-8",self,gbk)。如果都没用,这个网站可能是bbs,就只能祈祷它能换上好的编码吧。
买个好点的路由器,设置好网络,防火墙,
买一个笔记本路由器,支持ssl或者https协议,对应web不同的响应,
php脚本乱码属于mime类型的byte字符串转换造成的问题,通常需要修改配置文件/etc/httpd/server/下,修改mime类型相关的地址处理为encodingencodeed,关闭url重定向(useragent),
php网页抓取乱码(这里有新鲜出炉的PHP面向对象编程,程序狗速度看过来!)
网站优化 • 优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2021-11-23 11:14
这里是新的PHP面向对象编程,来看看程序狗的速度吧!
PHP 开源脚本语言 PHP(外文名:Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用的开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛低,易学,应用广泛。主要适用于Web开发领域。 PHP 的文件扩展名为 php。
本文章主要介绍PHP中使用file_get_contents抓取网页中文乱码问题的解决方法。可以通过使用curl配置gzip选项来解决。有一定的参考价值,有需要的朋友可以参考
本文介绍了PHP中使用file_get_contents抓取网页中文乱码问题的解决方案示例。分享给大家,供大家参考。具体方法如下:
file_get_contents 函数本来是一个很好的php内置的本地和远程文件操作函数。它可以让我们不费吹灰之力就可以直接下载远程数据,但是我在使用它来阅读网页时会遇到一些问题。页面出现乱码,这里总结一下具体的解决办法。
据网上的朋友说,可能是服务器开启了GZIP压缩的原因。下面是用firebug查看我的网站的header信息。 Gzip 已打开。请求头信息的原创头信息如下:
代码如下:
接受 text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
接受编码 gzip,放气
接受-语言zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
连接保持活动
Cookie __utma=225240837.787252530.1317310581.1335406161.1335411401.1537; __utmz=225240837.1326850415.887.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=%E4%BB%BB%E4% BD%95%E9%A1%B9%E7% 9B%AE%E9%83%BD%E4%B8%8D%E4%BC%9A%E9%82%A3%E4%B9%88%E7%AE% 80%E5%8D%95%20站点%3A; PHPSESSID=888mj4425p8s0m7s0frre3ovc7; __utmc=225240837; __utmb=225240837.1.10.1335411401
主持人
用户代理 Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
从头部信息可以看出Content-Encoding项是Gzip。
解决方法比较简单,就是用curl代替file_get_contents来获取,然后在curl配置参数中加一个。代码如下:
代码如下:
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
今天用file_get_contents抓图的时候,一开始没发现这个问题。
使用内置的 zlib 库。如果服务器已经安装了zlib库,可以通过如下代码轻松解决乱码问题,代码如下:
代码如下:
$data = file_get_contents("compress.zlib://".$url); 查看全部
php网页抓取乱码(这里有新鲜出炉的PHP面向对象编程,程序狗速度看过来!)
这里是新的PHP面向对象编程,来看看程序狗的速度吧!
PHP 开源脚本语言 PHP(外文名:Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用的开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛低,易学,应用广泛。主要适用于Web开发领域。 PHP 的文件扩展名为 php。
本文章主要介绍PHP中使用file_get_contents抓取网页中文乱码问题的解决方法。可以通过使用curl配置gzip选项来解决。有一定的参考价值,有需要的朋友可以参考
本文介绍了PHP中使用file_get_contents抓取网页中文乱码问题的解决方案示例。分享给大家,供大家参考。具体方法如下:
file_get_contents 函数本来是一个很好的php内置的本地和远程文件操作函数。它可以让我们不费吹灰之力就可以直接下载远程数据,但是我在使用它来阅读网页时会遇到一些问题。页面出现乱码,这里总结一下具体的解决办法。
据网上的朋友说,可能是服务器开启了GZIP压缩的原因。下面是用firebug查看我的网站的header信息。 Gzip 已打开。请求头信息的原创头信息如下:
代码如下:
接受 text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
接受编码 gzip,放气
接受-语言zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
连接保持活动
Cookie __utma=225240837.787252530.1317310581.1335406161.1335411401.1537; __utmz=225240837.1326850415.887.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=%E4%BB%BB%E4% BD%95%E9%A1%B9%E7% 9B%AE%E9%83%BD%E4%B8%8D%E4%BC%9A%E9%82%A3%E4%B9%88%E7%AE% 80%E5%8D%95%20站点%3A; PHPSESSID=888mj4425p8s0m7s0frre3ovc7; __utmc=225240837; __utmb=225240837.1.10.1335411401
主持人
用户代理 Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
从头部信息可以看出Content-Encoding项是Gzip。
解决方法比较简单,就是用curl代替file_get_contents来获取,然后在curl配置参数中加一个。代码如下:
代码如下:
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
今天用file_get_contents抓图的时候,一开始没发现这个问题。
使用内置的 zlib 库。如果服务器已经安装了zlib库,可以通过如下代码轻松解决乱码问题,代码如下:
代码如下:
$data = file_get_contents("compress.zlib://".$url);
php网页抓取乱码( PHP编程中需要注意编码的地方如数据库、页面、文件、JS等)
网站优化 • 优采云 发表了文章 • 0 个评论 • 53 次浏览 • 2021-11-23 00:05
PHP编程中需要注意编码的地方如数据库、页面、文件、JS等)
PHP统一页面编码避免乱码问题
更新时间:2015-04-09 08:57:58 投稿:俊杰
本文文章主要介绍PHP统一页面编码,避免乱码问题。本文讲解了PHP编程中需要注意编码的地方,如数据库、页面、文件、JS等,有需要的朋友可以参考以下
统一页面编码
MySQL 数据库编码、html 页面编码以及PHP 或html 文件本身的编码都必须保持一致。
1、MySQL 数据库编码:
创建数据库时指定代码(如gbk_chinese_ci)。创建数据表、创建字段、插入数据时不要指定代码。数据库代码将被自动继承。
连接数据库时,还有一个编码。连接数据库后,执行mysql_query('SET NAMES gbk');//用你的编码替换gbk,比如utf8。
2、html页面的编码参考这一行的设置:
复制代码代码如下:
3、PHP或html文件本身的编码:
用editplus打开php文件或html文件,保存为编码。如果数据库和页面编码是gbk,这里的编码是ansi;如果数据库和页面编码是utf-8,那么这里也选择utf-8。
4、Javascript或Flash中传入的数据是utf-8编码:
还要注意在Javascript或Flash中传输的数据是utf-8编码的。如果数据库和页面编码为gbk,则必须进行转码,然后写入数据库。
复制代码代码如下:
iconv('utf-8','gbk', $content);
5、在PHP程序中,可以添加一行来指定PHP源程序的编码:
复制代码代码如下:
header('Content-type: text/html; charset=gbk');
php页面编码
1.在文件头中设置编码
复制代码代码如下:
2.header和meta的区别
使用@header('Content-type: text/html; charset=gbk'); 区别
它们都告诉浏览器使用什么编码来显示网页。要说有什么不同,header是发送原创的HTTP头,网页中没有留下什么,meta是写在网页中的。
首先,如果网页中没有元数据,则发送 HTTP 标头将起作用。
其次,使用header()函数发送原创的HTTP头,可以收录更多的内容,设置编码只是其中之一。
第三,有时你不想在网页上显示任何内容,但你需要通知浏览器后续动作使用什么编码。 查看全部
php网页抓取乱码(
PHP编程中需要注意编码的地方如数据库、页面、文件、JS等)
PHP统一页面编码避免乱码问题
更新时间:2015-04-09 08:57:58 投稿:俊杰
本文文章主要介绍PHP统一页面编码,避免乱码问题。本文讲解了PHP编程中需要注意编码的地方,如数据库、页面、文件、JS等,有需要的朋友可以参考以下
统一页面编码
MySQL 数据库编码、html 页面编码以及PHP 或html 文件本身的编码都必须保持一致。
1、MySQL 数据库编码:
创建数据库时指定代码(如gbk_chinese_ci)。创建数据表、创建字段、插入数据时不要指定代码。数据库代码将被自动继承。
连接数据库时,还有一个编码。连接数据库后,执行mysql_query('SET NAMES gbk');//用你的编码替换gbk,比如utf8。
2、html页面的编码参考这一行的设置:
复制代码代码如下:
3、PHP或html文件本身的编码:
用editplus打开php文件或html文件,保存为编码。如果数据库和页面编码是gbk,这里的编码是ansi;如果数据库和页面编码是utf-8,那么这里也选择utf-8。
4、Javascript或Flash中传入的数据是utf-8编码:
还要注意在Javascript或Flash中传输的数据是utf-8编码的。如果数据库和页面编码为gbk,则必须进行转码,然后写入数据库。
复制代码代码如下:
iconv('utf-8','gbk', $content);
5、在PHP程序中,可以添加一行来指定PHP源程序的编码:
复制代码代码如下:
header('Content-type: text/html; charset=gbk');
php页面编码
1.在文件头中设置编码
复制代码代码如下:
2.header和meta的区别
使用@header('Content-type: text/html; charset=gbk'); 区别
它们都告诉浏览器使用什么编码来显示网页。要说有什么不同,header是发送原创的HTTP头,网页中没有留下什么,meta是写在网页中的。
首先,如果网页中没有元数据,则发送 HTTP 标头将起作用。
其次,使用header()函数发送原创的HTTP头,可以收录更多的内容,设置编码只是其中之一。
第三,有时你不想在网页上显示任何内容,但你需要通知浏览器后续动作使用什么编码。
php网页抓取乱码(一般来说,乱码的出现有2种原因,你知道吗?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2021-11-21 01:25
一般来说,出现乱码的原因有两个。一是设置了错误的编码(charset),导致浏览器解析错误的编码,导致满屏乱七八糟的《天书》,二是文件解析错误的编码打开,然后保存。例如,一个原本用GB2312编码的文本文件,用UTF-8编码打开并保存。解决上述乱码问题,首先需要知道开发中哪些环节涉及到编码:
1、文件编码:指页面文件(.html、.php等)本身保存的编码。Notepad和Dreamweaver在打开页面时会自动识别文件编码,所以不太可能出现问题。但是,ZendStudio 不会自动识别编码。它只会根据首选项的配置打开具有特定编码的文件。如果不注意工作,打开编码错误的文件,修改后保存,会出现乱码(我深有体会)。
2、 页面声明编码:在 HTML 代码 HEAD 中,可以用来告诉浏览器网页使用的编码。目前中文网站 XXX主要使用两种编码,GB2312和UTF-8。
3、数据库连接编码:指在进行数据库操作时,用于向数据库传输数据的编码。这里需要注意的是,不要与数据库本身的编码混淆。比如MySQL内部默认是latin1编码,即Mysql数据以latin1编码存储,其他编码传输到Mysql的数据会转换成latin1编码。
知道了WEB开发中涉及到编码的地方,也就知道出现乱码的原因了:以上三种编码设置不一致。由于大多数各种编码都兼容ASCII,所以不会出现英文符号,中文会倒霉。. 以下是一些常见的错误情况和解决方法:
1、 数据库使用UTF8编码,页面声明编码为GB2312,这是乱码最常见的原因。这时候在PHP脚本中直接SELECT数据是乱码,需要在查询前使用:
mysql_query("SETNAMESGBK"); 设置MYSQL连接码,保证页面声明码与这里设置的连接码一致(GBK是GB2312的扩展)。如果页面是 UTF-8 编码,您可以使用:
mysql_query("SETNAMESUTF8"); 注意是UTF8而不是一般的UTF-8。如果页面上声明的代码与数据库的内部代码一致,则可能没有设置连接代码。
注:其实MYSQL的数据输入输出比上面说的还要复杂。MYSQL配置文件my.ini中定义了两个默认代码,分别是[client]中的default-character-set和[mysqld]中的default。-character-set 分别设置客户端连接和内部数据库使用的默认编码。我们上面指定的编码实际上是MYSQL客户端连接服务器时的命令行参数character_set_client,告诉MYSQL服务器接收到的客户端数据是什么编码,而不是使用默认的编码。
2、 页面声明代码与文件本身不一致。这种情况很少发生,因为如果代码不一致,在创建页面时浏览器会看到乱码。更多的时候是发布后修改了一些小BUG,打开代码错误的页面然后保存造成的。或者使用一些FTP软件直接在线修改文件,比如CuteFTP,因为软件编码配置错误导致转换错误编码。
3、一些租虚拟主机的朋友,很明显上面三种编码设置正确或者出现乱码。比如网页是GB2312编码的,但是IE等浏览器打开时总是识别为UTF-8。网页的HEAD已经说明是GB2312了。手动修改浏览器编码为GB2312后,页面显示正常。原因是服务器Apache设置了服务器的全局默认编码,在httpd.conf中添加了AddDefaultCharsetUTF-8。这时候服务器会先把HTTP头发送给浏览器,它的优先级比页面中声明的代码要高,浏览器自然会误认。有两种解决方案,
2006.4.4 贴注:谢谢君臣告知:在HTML页面的HEAD区域,这句话一定要写在XXX之前,否则页面为空白(IE+PHP只要)。
以上是我对前段时间工作中遇到的问题的总结和体会。如有错误,请指正! 查看全部
php网页抓取乱码(一般来说,乱码的出现有2种原因,你知道吗?)
一般来说,出现乱码的原因有两个。一是设置了错误的编码(charset),导致浏览器解析错误的编码,导致满屏乱七八糟的《天书》,二是文件解析错误的编码打开,然后保存。例如,一个原本用GB2312编码的文本文件,用UTF-8编码打开并保存。解决上述乱码问题,首先需要知道开发中哪些环节涉及到编码:
1、文件编码:指页面文件(.html、.php等)本身保存的编码。Notepad和Dreamweaver在打开页面时会自动识别文件编码,所以不太可能出现问题。但是,ZendStudio 不会自动识别编码。它只会根据首选项的配置打开具有特定编码的文件。如果不注意工作,打开编码错误的文件,修改后保存,会出现乱码(我深有体会)。
2、 页面声明编码:在 HTML 代码 HEAD 中,可以用来告诉浏览器网页使用的编码。目前中文网站 XXX主要使用两种编码,GB2312和UTF-8。
3、数据库连接编码:指在进行数据库操作时,用于向数据库传输数据的编码。这里需要注意的是,不要与数据库本身的编码混淆。比如MySQL内部默认是latin1编码,即Mysql数据以latin1编码存储,其他编码传输到Mysql的数据会转换成latin1编码。
知道了WEB开发中涉及到编码的地方,也就知道出现乱码的原因了:以上三种编码设置不一致。由于大多数各种编码都兼容ASCII,所以不会出现英文符号,中文会倒霉。. 以下是一些常见的错误情况和解决方法:
1、 数据库使用UTF8编码,页面声明编码为GB2312,这是乱码最常见的原因。这时候在PHP脚本中直接SELECT数据是乱码,需要在查询前使用:
mysql_query("SETNAMESGBK"); 设置MYSQL连接码,保证页面声明码与这里设置的连接码一致(GBK是GB2312的扩展)。如果页面是 UTF-8 编码,您可以使用:
mysql_query("SETNAMESUTF8"); 注意是UTF8而不是一般的UTF-8。如果页面上声明的代码与数据库的内部代码一致,则可能没有设置连接代码。
注:其实MYSQL的数据输入输出比上面说的还要复杂。MYSQL配置文件my.ini中定义了两个默认代码,分别是[client]中的default-character-set和[mysqld]中的default。-character-set 分别设置客户端连接和内部数据库使用的默认编码。我们上面指定的编码实际上是MYSQL客户端连接服务器时的命令行参数character_set_client,告诉MYSQL服务器接收到的客户端数据是什么编码,而不是使用默认的编码。
2、 页面声明代码与文件本身不一致。这种情况很少发生,因为如果代码不一致,在创建页面时浏览器会看到乱码。更多的时候是发布后修改了一些小BUG,打开代码错误的页面然后保存造成的。或者使用一些FTP软件直接在线修改文件,比如CuteFTP,因为软件编码配置错误导致转换错误编码。
3、一些租虚拟主机的朋友,很明显上面三种编码设置正确或者出现乱码。比如网页是GB2312编码的,但是IE等浏览器打开时总是识别为UTF-8。网页的HEAD已经说明是GB2312了。手动修改浏览器编码为GB2312后,页面显示正常。原因是服务器Apache设置了服务器的全局默认编码,在httpd.conf中添加了AddDefaultCharsetUTF-8。这时候服务器会先把HTTP头发送给浏览器,它的优先级比页面中声明的代码要高,浏览器自然会误认。有两种解决方案,
2006.4.4 贴注:谢谢君臣告知:在HTML页面的HEAD区域,这句话一定要写在XXX之前,否则页面为空白(IE+PHP只要)。
以上是我对前段时间工作中遇到的问题的总结和体会。如有错误,请指正!
php网页抓取乱码(一个问题用file_get_contents抓取网页的解决方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2021-11-21 01:25
今天我正在编写一个程序来抓取其他人的网页。以前,公司需要一些功能,但是今天我在抓取网页时发现了一个问题。我用file_get_contents抓取网页,发现了如截图所示的乱码情况。
所以使用转码
$contents = iconv("gb2312", "utf-8//IGNORE",$contents);
即使之前遇到过乱码,我也遇到过网页编码的问题。html标签不会有问题,问题还没解决。
所以我在网上找到了
原因:据说得到的头信息中有Content-Encoding:gzip,说明内容是GZIP压缩的
然后我尝试抓取我的博客,发现可以正常抓取,而且header信息中还收录Content-Encoding:gzip。不清楚为什么会出现这种情况,稍后我会解决。
下面我推荐2个解决方案:
①、服务器安装zlib库
$contents = file_get_contents("compress.zlib://".$url);
②. 使用 CURL 而不是 file_get_contents
function curl_get($url, $gzip=false){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
if($gzip) curl_setopt($curl, CURLOPT_ENCODING, "gzip"); // 关键在这里
$content = curl_exec($curl);
curl_close($curl);
return $content;
}
既然问题已经解决了,继续下面的过程
QQ交流群:136351212 查看全部
php网页抓取乱码(一个问题用file_get_contents抓取网页的解决方法)
今天我正在编写一个程序来抓取其他人的网页。以前,公司需要一些功能,但是今天我在抓取网页时发现了一个问题。我用file_get_contents抓取网页,发现了如截图所示的乱码情况。

所以使用转码
$contents = iconv("gb2312", "utf-8//IGNORE",$contents);
即使之前遇到过乱码,我也遇到过网页编码的问题。html标签不会有问题,问题还没解决。

所以我在网上找到了
原因:据说得到的头信息中有Content-Encoding:gzip,说明内容是GZIP压缩的
然后我尝试抓取我的博客,发现可以正常抓取,而且header信息中还收录Content-Encoding:gzip。不清楚为什么会出现这种情况,稍后我会解决。
下面我推荐2个解决方案:
①、服务器安装zlib库
$contents = file_get_contents("compress.zlib://".$url);
②. 使用 CURL 而不是 file_get_contents
function curl_get($url, $gzip=false){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
if($gzip) curl_setopt($curl, CURLOPT_ENCODING, "gzip"); // 关键在这里
$content = curl_exec($curl);
curl_close($curl);
return $content;
}
既然问题已经解决了,继续下面的过程
QQ交流群:136351212
php网页抓取乱码(一般来说,乱码的出现有2种原因,你知道吗?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2021-11-16 14:25
一般来说,出现乱码的原因有两个。一是设置了错误的编码(charset),导致浏览器用错误的编码解析,导致满屏乱七八糟的《天书》,二是文件错误编码为打开,然后保存。例如,一个原本用GB2312编码的文本文件,用UTF-8编码打开并保存。解决上述乱码问题,首先需要知道开发中哪些环节涉及到编码:
1、文件编码:指页面文件(.html、.php等)本身保存的编码。Notepad和Dreamweaver在打开页面时会自动识别文件编码,所以不太可能出现问题。但是,ZendStudio 不会自动识别编码。它只会根据首选项的配置打开具有特定编码的文件。如果工作中不注意,打开编码错误的文件,修改后保存,会出现乱码(我深有体会)。
2、 页面声明编码:在 HTML 代码 HEAD 中,可以用来告诉浏览器网页使用的编码。目前,在中文网站的开发中,XXX主要使用两种编码:GB2312和UTF-8。
3、数据库连接编码:指在进行数据库操作时,用于向数据库传输数据的编码。这里需要注意的是,不要与数据库本身的编码混淆。比如MySQL内部默认是latin1编码,即Mysql数据以latin1编码存储,其他编码传输到Mysql的数据会转换成latin1编码。
知道了WEB开发中涉及到编码的地方,也就知道出现乱码的原因了:以上三种编码设置不一致。由于大多数各种编码都兼容ASCII,所以不会出现英文符号,中文会倒霉。. 以下是一些常见的错误情况和解决方法:
1、 数据库使用UTF8编码,页面声明编码为GB2312,这是乱码最常见的原因。这时候直接在PHP脚本中Select数据是乱码,需要在查询前使用:
mysql_query("SETNAMESGBK");
设置MYSQL连接码,确保页面声明码与这里设置的连接码一致(GBK是GB2312的扩展)。如果页面是 UTF-8 编码,您可以使用:
mysql_query("SETNAMESUTF8");
注意是UTF8而不是一般的UTF-8。如果页面上声明的代码与数据库的内部代码一致,则可能没有设置连接代码。
注:其实MYSQL的数据输入输出比上面说的还要复杂。MYSQL配置文件my.ini中定义了两个默认代码,分别是[client]中的default-character-set和[mysqld]中的default。-character-set 分别设置客户端连接和内部数据库使用的默认编码。我们上面指定的编码实际上是MYSQL客户端连接服务器时的命令行参数character_set_client,告诉MYSQL服务器接收到的客户端数据是什么编码,而不是使用默认的编码。
2、 页面声明代码与文件本身不一致。这种情况很少发生,因为如果代码不一致,在创建页面时浏览器会看到乱码。更多的时候是发布后修改了一些小BUG,打开代码错误的页面然后保存造成的。或者使用一些FTP软件直接在线修改文件,比如CuteFTP,因为软件编码配置错误导致转换错误编码。
3、一些租虚拟主机的朋友,很明显上面三种编码设置正确或者出现乱码。比如网页是GB2312编码的,但是IE等浏览器打开时总是识别为UTF-8。网页的HEAD已经说明是GB2312了。手动修改浏览器编码为GB2312后,页面显示正常。原因是服务器Apache设置了服务器的全局默认编码,在httpd.conf中添加了AddDefaultCharsetUTF-8。这时候服务器会先把HTTP头发送给浏览器,它的优先级比页面中声明的代码要高,浏览器自然会误认。有两种解决方案。
以上就是PHP和MySQL开发中页面乱码的产生及解决的详细内容。更多详情请关注其他相关html中文网站文章! 查看全部
php网页抓取乱码(一般来说,乱码的出现有2种原因,你知道吗?)
一般来说,出现乱码的原因有两个。一是设置了错误的编码(charset),导致浏览器用错误的编码解析,导致满屏乱七八糟的《天书》,二是文件错误编码为打开,然后保存。例如,一个原本用GB2312编码的文本文件,用UTF-8编码打开并保存。解决上述乱码问题,首先需要知道开发中哪些环节涉及到编码:
1、文件编码:指页面文件(.html、.php等)本身保存的编码。Notepad和Dreamweaver在打开页面时会自动识别文件编码,所以不太可能出现问题。但是,ZendStudio 不会自动识别编码。它只会根据首选项的配置打开具有特定编码的文件。如果工作中不注意,打开编码错误的文件,修改后保存,会出现乱码(我深有体会)。
2、 页面声明编码:在 HTML 代码 HEAD 中,可以用来告诉浏览器网页使用的编码。目前,在中文网站的开发中,XXX主要使用两种编码:GB2312和UTF-8。
3、数据库连接编码:指在进行数据库操作时,用于向数据库传输数据的编码。这里需要注意的是,不要与数据库本身的编码混淆。比如MySQL内部默认是latin1编码,即Mysql数据以latin1编码存储,其他编码传输到Mysql的数据会转换成latin1编码。
知道了WEB开发中涉及到编码的地方,也就知道出现乱码的原因了:以上三种编码设置不一致。由于大多数各种编码都兼容ASCII,所以不会出现英文符号,中文会倒霉。. 以下是一些常见的错误情况和解决方法:
1、 数据库使用UTF8编码,页面声明编码为GB2312,这是乱码最常见的原因。这时候直接在PHP脚本中Select数据是乱码,需要在查询前使用:
mysql_query("SETNAMESGBK");
设置MYSQL连接码,确保页面声明码与这里设置的连接码一致(GBK是GB2312的扩展)。如果页面是 UTF-8 编码,您可以使用:
mysql_query("SETNAMESUTF8");
注意是UTF8而不是一般的UTF-8。如果页面上声明的代码与数据库的内部代码一致,则可能没有设置连接代码。
注:其实MYSQL的数据输入输出比上面说的还要复杂。MYSQL配置文件my.ini中定义了两个默认代码,分别是[client]中的default-character-set和[mysqld]中的default。-character-set 分别设置客户端连接和内部数据库使用的默认编码。我们上面指定的编码实际上是MYSQL客户端连接服务器时的命令行参数character_set_client,告诉MYSQL服务器接收到的客户端数据是什么编码,而不是使用默认的编码。
2、 页面声明代码与文件本身不一致。这种情况很少发生,因为如果代码不一致,在创建页面时浏览器会看到乱码。更多的时候是发布后修改了一些小BUG,打开代码错误的页面然后保存造成的。或者使用一些FTP软件直接在线修改文件,比如CuteFTP,因为软件编码配置错误导致转换错误编码。
3、一些租虚拟主机的朋友,很明显上面三种编码设置正确或者出现乱码。比如网页是GB2312编码的,但是IE等浏览器打开时总是识别为UTF-8。网页的HEAD已经说明是GB2312了。手动修改浏览器编码为GB2312后,页面显示正常。原因是服务器Apache设置了服务器的全局默认编码,在httpd.conf中添加了AddDefaultCharsetUTF-8。这时候服务器会先把HTTP头发送给浏览器,它的优先级比页面中声明的代码要高,浏览器自然会误认。有两种解决方案。
以上就是PHP和MySQL开发中页面乱码的产生及解决的详细内容。更多详情请关注其他相关html中文网站文章!
php网页抓取乱码( PHP环境下utf8乱码的解决方法--apachephp配置问题)
网站优化 • 优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2021-11-15 23:22
PHP环境下utf8乱码的解决方法--apachephp配置问题)
【讲座】PHP环境下utf8乱码的解决方法PHP环境下utf8乱码的解决方法php环境下utf8乱码的解决方法---apachephp配置题乘法口算100题七年级有理数混合运算100题电脑一级题库二进制一次性方程应用题真心话大冒险在PHP程序中添加ini_setdefault_charsetutf-8将收录unicode代码的文件统一转换成官方文档格式IOU标准格式个人IOU标准格式个人IOU笔记格式需要这里要注意editplus保存的是utf8文件,没有BOM头。大多数情况下不会有问题,模板输出会出现乱码。除了检查模板文件中的utf8标记外,使用editplus保存模板时没有BOM头。原因是在模板解析过程中,PHP 在读取文件时不会检查 BOM 头。它会把文件当成ansi格式,这样最终输出到浏览器的HTML就变成乱码了。另一段文章我的页面代码如下[Copytoclipboard][-]CODEDOCTYPEhtmlPUBLIC"-W3CDTDXHTML10TransitionalEN""htmlxmlns"htmlheadmetahttp-equiv"Content-Type"content"texthtmlcharsetutf-8"titletitlelinkrel"stylesheet"type"textcss" hrefscriptcsscss"scripttype"textjavascript"srcscriptmenujs"scriptglbodyclass"left"rcimagediv"div" 44288475324946852 系统会提示您警告您要做什么?先把BOM去掉再添加[Copytoclipboard][-]CODEheaderContent-TypetexthtmlcharsetUTF-8 httpdconfAddDefaultCharsetGB2312PHPINIdefault_charset"gb2312"----------------- ---------- ----------------------------------------- ---------- ----------------------------------------- ---------- ------------------------------------ 如果你在线 大部分页面都是通过搜索apache配置找到的会建议你在httpdconf中加入这样一句话。AddDefaultCharsetGB2312对于只使用GB2312编码的新手开发者来说是可以的,但是如果你想使用UTF-8字符集,比如testphp文件需要有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8“这个代码”这时候你打开浏览器访问testphp页面,你看到了正确的页面,但是如果浏览器实际上以 GB2312 编码解释了服务器的返回 为什么是响应?原因是浏览器根据HTTP响应报文头中的Content-typetexthtmlcharse,ie自动选择utf8后,不会出现乱码。我不想使用 BOM,因为会话会提示您警告您使用 BOM 后要做什么。先把BOM去掉然后把[Copytoclipboard][-]CODEheaderContent-TypetexthtmlcharsetUTF-8添加到httpdconfAddDefaultCharsetGB2312PHPINIdefault_charset"gb2312"--------------------------- --------------------- ----------------------------- --------------------- ----------------------------- --------------------- ----------------如果在网上搜索apache的配置,找到的大部分页面都会建议你在httpdconf中添加这样一句话AddDefaultCharsetGB2312。对于只使用GB2312编码的新手和开发者,这样做是可以的,但是如果你想使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候就可以打开浏览器访问testphp页面了。是正确的页面,但是如果浏览器真的用GB2312编码解释了服务器返回的响应,原因是浏览器是根据http响应消息头部的Content-typetexthtmlcharse ie自动选择utf8后,会出现无乱码。我不想使用 BOM,因为会话会提示您警告您使用 BOM 后要做什么。先去掉BOM,然后在httpdconfAddDefaultCharsetGB2312PHPINIdefault_charset"gb2312"---------------------------添加[Copytoclipboard][-]CODEheaderContent-TypetexthtmlcharsetUTF-8 --------------------- ----------------------------- --------------------- ----------------------------- --------------------- ----------------如果在网上搜索apache配置,大部分找到的页面会提示你在httpdconf中添加这样一句AddDefaultCharsetGB2312。对于只使用GB2312编码的新手和开发者,这样做是可以的,但是如果你想使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候就可以打开浏览器访问testphp页面了。是正确的页面,但是如果浏览器真的用GB2312编码解释了服务器返回的响应,原因是浏览器是基于http响应消息头部的Content-typetexthtmlcharse ------------- ------------------------------------- ------------- ------------------------------------- ------------- ------------------------------------- ------------- - 如果你在网上搜索apache的配置,找到的大部分页面都会建议你在httpdconf中添加这样一句话AddDefaultCharsetGB2312。对于只使用GB2312编码的新手开发者来说这个可以,但是如果你要使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候打开浏览器访问testphp页面,看到的是正确的页面,但是如果浏览器实际上使用GB2312编码来解释服务器返回的响应,原因是浏览器是基于http响应消息头中的Content-typetexthtmlcharse.----------- ------------------------------- ----------- ------------------------------- ----------- ------------------------------- ----------- --- 如果你在网上搜索apache的配置,找到的页面大部分都会提示你在httpdconf中添加AddDefaultCharsetGB2312这样的一句话。对于只使用GB2312编码的新手开发者来说这个可以,但是如果你要使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候打开浏览器访问testphp页面,看到的是正确的页面,
tGB2312来决定使用哪种编码来解释响应,也就是说apache服务器仍然使用GB2312编码来传输数据。所以如果apache的默认字符集设置为GB2312,即使页面中声明了UTF-8编码,apache服务器仍然会遵循GB2312编码。发送httpresponse就可以了。让我们将 AddDefaultCharsetGB2312 更改为 AddDefaultCharsetUTF-8 以查看结果。如果看到乱码,恭喜你,你也知道是乱码问题了。如果你看到一个空白页,那你就惨了。你可能认为这是其他一些原因。是造成的,不会从编码的角度考虑如何解决问题。这就是为什么 php 文件本身是用系统字符集编码的原因。中文windowsXP使用GB2312。每个文件头都有一个字段,表明该文件已被使用。当 apache 收到浏览器的请求时,它会让 php 解释请求的页面。比如testphpphp会识别testphp的编码方式是GB2312,就像我们用javac编译java源文件一样,编译器默认使用系统。编码读取源文件的内容。如果源文件没有用系统编码保存,可以使用命令javac-encoding指定具体编码以GB2312的编码格式将数据传给apache,apache服务器不会改变从php传过来的数据. 在响应消息的标题中将字符集设置为 UTF-8。党员维权考察表和毫米对照表条目数教师职称等级表员工考核得分表普通年金现值系数代表一个人,而普通GB2312或BIG5由于上述原因输出时为两页原因。有半个汉字。这时候,一半的汉字会组合成一个乱码,IE完全无法读取。如果你发现整个叶子表面实际上已经输出了,如果你使用MozillaMozillaFirefoxSarafi浏览器,这不会导致这个问题,而是一堆乱码。这是由于 Firefox 和 IE 解析网页编码的策略不同造成的。OK,我们把testphp设为UT,保存F-8然后用浏览器访问就没有问题了,但这将使 apache 目录中的所有 Web 应用程序仅使用相同的编码。在http响应消息的header中会设置Charset,但是只会设置Content-typetexthtml,浏览器会依赖html文件中设置的harness来确定编码。其次,脚本phpini文件中的default_charsetUTF-8和httpdconf文件的作用是一样的。注释掉这一行,让php自动识别文件的编码方式。不管你用什么编码方式,只要testphp中的metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8和你的testphp文件编码一致就不会出现乱码问题。用户提交的数据的编码。浏览器提交的字符编码由客户端的characherencoding决定,例如,当前浏览器的编码是 Gb2312。用户提交数据后,无论apache设置的编码是GB2312还是UTF-8,服务器端收到的数据仍然是Gb2312编码的数据。如果要在返回页面显示用户刚刚提交的数据,页面采用UTF-8编码,或者用户提交的数据存储在数据库中,数据库采用UTF-8编码,那么需要字符转换"tmlcharsetUTF-8"和你的testphp文件的编码是一样的,所以不会出现乱码的问题。用户提交的数据的编码。浏览器提交的字符编码由客户端的字符编码决定。比如当前浏览器的编码是Gb2312,无论用户提交数据后apache设置的编码如何。方法是 GB2312 或 UTF-8。这时候服务器端接收到的数据还是Gb2312编码的。如果要在返回页面显示用户刚刚提交的数据,并且页面是UTF-8编码的或者存储在数据库中的 用户提交的数据和数据库都是UTF-8编码的,那么就需要进行字符转换“tmlcharsetUTF-8”和你的testphp文件的编码是一样的,所以不会出现乱码的问题。用户提交的数据的编码。浏览器提交的字符编码由客户端的字符编码决定。比如当前浏览器的编码是Gb2312,与用户提交数据后apache设置的编码无关。方法是 GB2312 或 UTF-8。这时候服务器端接收到的数据还是Gb2312编码的。如果要在返回页面显示用户刚刚提交的数据,并且页面是UTF-8编码的或者存储在数据库中的 用户提交的数据和数据库都是UTF-8编码的,那么就需要进行字符转换 查看全部
php网页抓取乱码(
PHP环境下utf8乱码的解决方法--apachephp配置问题)

【讲座】PHP环境下utf8乱码的解决方法PHP环境下utf8乱码的解决方法php环境下utf8乱码的解决方法---apachephp配置题乘法口算100题七年级有理数混合运算100题电脑一级题库二进制一次性方程应用题真心话大冒险在PHP程序中添加ini_setdefault_charsetutf-8将收录unicode代码的文件统一转换成官方文档格式IOU标准格式个人IOU标准格式个人IOU笔记格式需要这里要注意editplus保存的是utf8文件,没有BOM头。大多数情况下不会有问题,模板输出会出现乱码。除了检查模板文件中的utf8标记外,使用editplus保存模板时没有BOM头。原因是在模板解析过程中,PHP 在读取文件时不会检查 BOM 头。它会把文件当成ansi格式,这样最终输出到浏览器的HTML就变成乱码了。另一段文章我的页面代码如下[Copytoclipboard][-]CODEDOCTYPEhtmlPUBLIC"-W3CDTDXHTML10TransitionalEN""htmlxmlns"htmlheadmetahttp-equiv"Content-Type"content"texthtmlcharsetutf-8"titletitlelinkrel"stylesheet"type"textcss" hrefscriptcsscss"scripttype"textjavascript"srcscriptmenujs"scriptglbodyclass"left"rcimagediv"div" 44288475324946852 系统会提示您警告您要做什么?先把BOM去掉再添加[Copytoclipboard][-]CODEheaderContent-TypetexthtmlcharsetUTF-8 httpdconfAddDefaultCharsetGB2312PHPINIdefault_charset"gb2312"----------------- ---------- ----------------------------------------- ---------- ----------------------------------------- ---------- ------------------------------------ 如果你在线 大部分页面都是通过搜索apache配置找到的会建议你在httpdconf中加入这样一句话。AddDefaultCharsetGB2312对于只使用GB2312编码的新手开发者来说是可以的,但是如果你想使用UTF-8字符集,比如testphp文件需要有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8“这个代码”这时候你打开浏览器访问testphp页面,你看到了正确的页面,但是如果浏览器实际上以 GB2312 编码解释了服务器的返回 为什么是响应?原因是浏览器根据HTTP响应报文头中的Content-typetexthtmlcharse,ie自动选择utf8后,不会出现乱码。我不想使用 BOM,因为会话会提示您警告您使用 BOM 后要做什么。先把BOM去掉然后把[Copytoclipboard][-]CODEheaderContent-TypetexthtmlcharsetUTF-8添加到httpdconfAddDefaultCharsetGB2312PHPINIdefault_charset"gb2312"--------------------------- --------------------- ----------------------------- --------------------- ----------------------------- --------------------- ----------------如果在网上搜索apache的配置,找到的大部分页面都会建议你在httpdconf中添加这样一句话AddDefaultCharsetGB2312。对于只使用GB2312编码的新手和开发者,这样做是可以的,但是如果你想使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候就可以打开浏览器访问testphp页面了。是正确的页面,但是如果浏览器真的用GB2312编码解释了服务器返回的响应,原因是浏览器是根据http响应消息头部的Content-typetexthtmlcharse ie自动选择utf8后,会出现无乱码。我不想使用 BOM,因为会话会提示您警告您使用 BOM 后要做什么。先去掉BOM,然后在httpdconfAddDefaultCharsetGB2312PHPINIdefault_charset"gb2312"---------------------------添加[Copytoclipboard][-]CODEheaderContent-TypetexthtmlcharsetUTF-8 --------------------- ----------------------------- --------------------- ----------------------------- --------------------- ----------------如果在网上搜索apache配置,大部分找到的页面会提示你在httpdconf中添加这样一句AddDefaultCharsetGB2312。对于只使用GB2312编码的新手和开发者,这样做是可以的,但是如果你想使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候就可以打开浏览器访问testphp页面了。是正确的页面,但是如果浏览器真的用GB2312编码解释了服务器返回的响应,原因是浏览器是基于http响应消息头部的Content-typetexthtmlcharse ------------- ------------------------------------- ------------- ------------------------------------- ------------- ------------------------------------- ------------- - 如果你在网上搜索apache的配置,找到的大部分页面都会建议你在httpdconf中添加这样一句话AddDefaultCharsetGB2312。对于只使用GB2312编码的新手开发者来说这个可以,但是如果你要使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候打开浏览器访问testphp页面,看到的是正确的页面,但是如果浏览器实际上使用GB2312编码来解释服务器返回的响应,原因是浏览器是基于http响应消息头中的Content-typetexthtmlcharse.----------- ------------------------------- ----------- ------------------------------- ----------- ------------------------------- ----------- --- 如果你在网上搜索apache的配置,找到的页面大部分都会提示你在httpdconf中添加AddDefaultCharsetGB2312这样的一句话。对于只使用GB2312编码的新手开发者来说这个可以,但是如果你要使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候打开浏览器访问testphp页面,看到的是正确的页面,

tGB2312来决定使用哪种编码来解释响应,也就是说apache服务器仍然使用GB2312编码来传输数据。所以如果apache的默认字符集设置为GB2312,即使页面中声明了UTF-8编码,apache服务器仍然会遵循GB2312编码。发送httpresponse就可以了。让我们将 AddDefaultCharsetGB2312 更改为 AddDefaultCharsetUTF-8 以查看结果。如果看到乱码,恭喜你,你也知道是乱码问题了。如果你看到一个空白页,那你就惨了。你可能认为这是其他一些原因。是造成的,不会从编码的角度考虑如何解决问题。这就是为什么 php 文件本身是用系统字符集编码的原因。中文windowsXP使用GB2312。每个文件头都有一个字段,表明该文件已被使用。当 apache 收到浏览器的请求时,它会让 php 解释请求的页面。比如testphpphp会识别testphp的编码方式是GB2312,就像我们用javac编译java源文件一样,编译器默认使用系统。编码读取源文件的内容。如果源文件没有用系统编码保存,可以使用命令javac-encoding指定具体编码以GB2312的编码格式将数据传给apache,apache服务器不会改变从php传过来的数据. 在响应消息的标题中将字符集设置为 UTF-8。党员维权考察表和毫米对照表条目数教师职称等级表员工考核得分表普通年金现值系数代表一个人,而普通GB2312或BIG5由于上述原因输出时为两页原因。有半个汉字。这时候,一半的汉字会组合成一个乱码,IE完全无法读取。如果你发现整个叶子表面实际上已经输出了,如果你使用MozillaMozillaFirefoxSarafi浏览器,这不会导致这个问题,而是一堆乱码。这是由于 Firefox 和 IE 解析网页编码的策略不同造成的。OK,我们把testphp设为UT,保存F-8然后用浏览器访问就没有问题了,但这将使 apache 目录中的所有 Web 应用程序仅使用相同的编码。在http响应消息的header中会设置Charset,但是只会设置Content-typetexthtml,浏览器会依赖html文件中设置的harness来确定编码。其次,脚本phpini文件中的default_charsetUTF-8和httpdconf文件的作用是一样的。注释掉这一行,让php自动识别文件的编码方式。不管你用什么编码方式,只要testphp中的metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8和你的testphp文件编码一致就不会出现乱码问题。用户提交的数据的编码。浏览器提交的字符编码由客户端的characherencoding决定,例如,当前浏览器的编码是 Gb2312。用户提交数据后,无论apache设置的编码是GB2312还是UTF-8,服务器端收到的数据仍然是Gb2312编码的数据。如果要在返回页面显示用户刚刚提交的数据,页面采用UTF-8编码,或者用户提交的数据存储在数据库中,数据库采用UTF-8编码,那么需要字符转换"tmlcharsetUTF-8"和你的testphp文件的编码是一样的,所以不会出现乱码的问题。用户提交的数据的编码。浏览器提交的字符编码由客户端的字符编码决定。比如当前浏览器的编码是Gb2312,无论用户提交数据后apache设置的编码如何。方法是 GB2312 或 UTF-8。这时候服务器端接收到的数据还是Gb2312编码的。如果要在返回页面显示用户刚刚提交的数据,并且页面是UTF-8编码的或者存储在数据库中的 用户提交的数据和数据库都是UTF-8编码的,那么就需要进行字符转换“tmlcharsetUTF-8”和你的testphp文件的编码是一样的,所以不会出现乱码的问题。用户提交的数据的编码。浏览器提交的字符编码由客户端的字符编码决定。比如当前浏览器的编码是Gb2312,与用户提交数据后apache设置的编码无关。方法是 GB2312 或 UTF-8。这时候服务器端接收到的数据还是Gb2312编码的。如果要在返回页面显示用户刚刚提交的数据,并且页面是UTF-8编码的或者存储在数据库中的 用户提交的数据和数据库都是UTF-8编码的,那么就需要进行字符转换
php网页抓取乱码(PHP与数据库的编码应一致1.修改.8编码)
网站优化 • 优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2021-11-14 08:04
一。首先是PHP网页的编码
1. php文件本身的编码和网页的编码要匹配
一种。如果要使用gb2312编码,那么php应该输出header:header("Content-Type: text/html; charset=gb2312"),添加静态页面,所有文件的编码格式都是ANSI,可以用记事本并另存为 选择编码为 ANSI 并覆盖源文件。
湾 如果要使用utf-8编码,php要输出header:header("Content-Type: text/html; charset=utf-8"),添加静态页面,所有文件的编码格式为utf-8。保存为 utf-8 可能有点麻烦。一般在utf-8文件的开头都会有一个BOM。如果你使用 session,你可以用 editplus 保存它。在editplus中,进入Tools->Preferences->File->UTF-8 Sign,选择始终删除,然后保存删除BOM信息。
2. PHP本身不是Unicode,所有substr等函数都必须改成mb_substr(需要安装mbstring扩展);或使用 iconv 进行转码。
二。PHP与Mysql的数据交互
PHP和数据库的编码要一致
1. 修改mysql配置文件my.ini或f。mysql最好使用utf8编码
[mysql]
默认字符集=utf8
[mysqld]
默认字符集=utf8
默认存储引擎=MyISAM
在[mysqld]下添加:
默认排序规则=utf8_bin
init_connect='SET NAMES utf8'
2. 添加mysql_query("set names'encoding'"); 在需要做数据库操作的php程序之前,编码与php编码相同,如果php编码为gb2312,则mysql编码为gb2312,如果是utf-8则mysql编码为utf8,所以会有插入或检索数据时无乱码
三。PHP与操作系统有关
Windows 和 Linux 的编码是不同的。在windows环境下,调用php函数时如果参数是utf-8编码,就会出现错误,比如move_uploaded_file()、filesize()、readfile()等,这些函数都是处理上传的,下载的时候经常用到,调用时可能会出现以下错误:
警告:move_uploaded_file()[function.move-uploaded-file]:无法打开流:无效参数...
警告:move_uploaded_file()[function.move-uploaded-file]:无法在...中移动''到''
警告:filesize() [function.filesize]: stat failed for ... in ...
警告:readfile() [function.readfile]:无法打开流:.. 中的参数无效。
虽然在Linux环境下gb2312编码不会出现这些错误,但是保存的文件名出现乱码,无法读取文件。这时可以将参数转换为操作系统识别的编码。编码转换可以是mb_convert_encoding(string, New code, original code)或者iconv(original code, new code, string),这样处理后保存的文件名就不会出现乱码,可以正常读取文件,实现上传下载中文名称文件。
其实还有更好的方案,完全脱离系统,不需要考虑系统的编码。可以生成一个只有字母和数字的序列作为文件名,并将原来的中文名保存在数据库中,这样调用move_uploaded_file()就没有问题了。下载时只需要把文件名改成原来的中文名即可。实现下载的代码如下
header("Pragma: public");
header("过期:0");
header("Cache-Component: must-revalidate, post-check=0, pre-check=0");
header("内容类型:$file_type");
header("内容长度:$file_size");
header("内容处理:附件;文件名=\"$file_name\"");
header("内容传输编码:二进制");
读取文件($file_path);
$file_type 为文件类型,$file_name 为原创名称,$file_path 为保存在服务上的文件地址。
四。总结一下为什么会乱码
一般来说,出现乱码的原因有两个。一是设置了错误的编码(charset),导致浏览器解析错误的编码,导致满屏乱七八糟的《天书》,二是文件解析错误的编码打开,然后保存。例如,一个原本用GB2312编码的文本文件,用UTF-8编码打开并保存。要解决上面的乱码问题,首先需要知道开发的哪些方面涉及到编码:
1、文件编码:指页面文件(.html、.php等)本身保存的编码。记事本和Dreamweaver在打开页面时会自动识别文件编码,所以不太可能出现问题。但是,ZendStudio 不会自动识别编码。它只会根据首选项的配置打开具有特定编码的文件。如果工作中不注意,打开编码错误的文件,修改后保存,出现乱码(我深有体会)。
2、 页面声明编码:在 HTML 代码 HEAD 中,可以用来告诉浏览器网页使用什么编码。目前中文网站 XXX主要使用两种编码,GB2312和UTF-8。
3、数据库连接编码:是指在执行数据库操作时,用于向数据库传输数据的编码。这里需要注意的是,不要与数据库本身的编码混淆。比如MySQL内部默认是latin1编码,即Mysql的数据以latin1编码存储,其他编码传输到Mysql的数据会转换成latin1编码。
知道了WEB开发中涉及到编码的地方,也就知道出现乱码的原因了:以上三种编码设置不一致。由于大多数各种编码都兼容ASCII,所以不会出现英文符号,中文会倒霉。.
五。决战的一些常见错误情况及解决办法:
1、 数据库使用UTF8编码,页面声明编码为GB2312,这是乱码最常见的原因。这时候直接在PHP脚本中SELECT数据就乱码了。查询前需要使用:mysql_query("SET NAMES GBK"); 设置MYSQL连接码,保证页面声明码与这里设置的连接码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码,可以使用:mysql_query("SET NAMES UTF8");
请注意,它是 UTF8 而不是一般的 UTF-8。如果页面上声明的代码与数据库的内部代码一致,则可能没有设置连接代码。
注:其实MYSQL的数据输入输出比上面说的还要复杂。MYSQL配置文件my.ini中定义了两个默认代码,分别是[client]中的默认-character-set和[mysqld]中的默认。-character-set 设置客户端连接和内部数据库中使用的默认编码。我们上面指定的编码其实就是MYSQL客户端连接服务器时的命令行参数character_set_client,告诉MYSQL服务器接收到的客户端数据是什么编码,而不是使用默认的编码。
2、 页面声明代码与文件本身不一致。这种情况很少发生,因为如果代码不一致,在创建页面时浏览器会看到乱码。更多的时候是发布后修改了一些小BUG,打开代码错误的页面然后保存造成的。或者使用一些FTP软件直接在线修改文件,比如CuteFTP,因为软件编码配置错误导致转换错误编码。
3、一些租虚拟主机的朋友,很明显上面三种编码设置正确或者出现乱码。比如网页是GB2312编码的,但是IE等浏览器打开时总是识别为UTF-8。网页的HEAD已经说明是GB2312了。手动修改浏览器编码为GB2312后,页面显示正常。原因是服务器Apache设置了服务器全局默认编码,在httpd.conf中添加了AddDefaultCharset UTF-8。这时候服务器会先把HTTP头发送给浏览器,它的优先级比页面中声明的代码要高,浏览器自然会误认。有两种解决方案, 查看全部
php网页抓取乱码(PHP与数据库的编码应一致1.修改.8编码)
一。首先是PHP网页的编码
1. php文件本身的编码和网页的编码要匹配
一种。如果要使用gb2312编码,那么php应该输出header:header("Content-Type: text/html; charset=gb2312"),添加静态页面,所有文件的编码格式都是ANSI,可以用记事本并另存为 选择编码为 ANSI 并覆盖源文件。
湾 如果要使用utf-8编码,php要输出header:header("Content-Type: text/html; charset=utf-8"),添加静态页面,所有文件的编码格式为utf-8。保存为 utf-8 可能有点麻烦。一般在utf-8文件的开头都会有一个BOM。如果你使用 session,你可以用 editplus 保存它。在editplus中,进入Tools->Preferences->File->UTF-8 Sign,选择始终删除,然后保存删除BOM信息。
2. PHP本身不是Unicode,所有substr等函数都必须改成mb_substr(需要安装mbstring扩展);或使用 iconv 进行转码。
二。PHP与Mysql的数据交互
PHP和数据库的编码要一致
1. 修改mysql配置文件my.ini或f。mysql最好使用utf8编码
[mysql]
默认字符集=utf8
[mysqld]
默认字符集=utf8
默认存储引擎=MyISAM
在[mysqld]下添加:
默认排序规则=utf8_bin
init_connect='SET NAMES utf8'
2. 添加mysql_query("set names'encoding'"); 在需要做数据库操作的php程序之前,编码与php编码相同,如果php编码为gb2312,则mysql编码为gb2312,如果是utf-8则mysql编码为utf8,所以会有插入或检索数据时无乱码
三。PHP与操作系统有关
Windows 和 Linux 的编码是不同的。在windows环境下,调用php函数时如果参数是utf-8编码,就会出现错误,比如move_uploaded_file()、filesize()、readfile()等,这些函数都是处理上传的,下载的时候经常用到,调用时可能会出现以下错误:
警告:move_uploaded_file()[function.move-uploaded-file]:无法打开流:无效参数...
警告:move_uploaded_file()[function.move-uploaded-file]:无法在...中移动''到''
警告:filesize() [function.filesize]: stat failed for ... in ...
警告:readfile() [function.readfile]:无法打开流:.. 中的参数无效。
虽然在Linux环境下gb2312编码不会出现这些错误,但是保存的文件名出现乱码,无法读取文件。这时可以将参数转换为操作系统识别的编码。编码转换可以是mb_convert_encoding(string, New code, original code)或者iconv(original code, new code, string),这样处理后保存的文件名就不会出现乱码,可以正常读取文件,实现上传下载中文名称文件。
其实还有更好的方案,完全脱离系统,不需要考虑系统的编码。可以生成一个只有字母和数字的序列作为文件名,并将原来的中文名保存在数据库中,这样调用move_uploaded_file()就没有问题了。下载时只需要把文件名改成原来的中文名即可。实现下载的代码如下
header("Pragma: public");
header("过期:0");
header("Cache-Component: must-revalidate, post-check=0, pre-check=0");
header("内容类型:$file_type");
header("内容长度:$file_size");
header("内容处理:附件;文件名=\"$file_name\"");
header("内容传输编码:二进制");
读取文件($file_path);
$file_type 为文件类型,$file_name 为原创名称,$file_path 为保存在服务上的文件地址。
四。总结一下为什么会乱码
一般来说,出现乱码的原因有两个。一是设置了错误的编码(charset),导致浏览器解析错误的编码,导致满屏乱七八糟的《天书》,二是文件解析错误的编码打开,然后保存。例如,一个原本用GB2312编码的文本文件,用UTF-8编码打开并保存。要解决上面的乱码问题,首先需要知道开发的哪些方面涉及到编码:
1、文件编码:指页面文件(.html、.php等)本身保存的编码。记事本和Dreamweaver在打开页面时会自动识别文件编码,所以不太可能出现问题。但是,ZendStudio 不会自动识别编码。它只会根据首选项的配置打开具有特定编码的文件。如果工作中不注意,打开编码错误的文件,修改后保存,出现乱码(我深有体会)。
2、 页面声明编码:在 HTML 代码 HEAD 中,可以用来告诉浏览器网页使用什么编码。目前中文网站 XXX主要使用两种编码,GB2312和UTF-8。
3、数据库连接编码:是指在执行数据库操作时,用于向数据库传输数据的编码。这里需要注意的是,不要与数据库本身的编码混淆。比如MySQL内部默认是latin1编码,即Mysql的数据以latin1编码存储,其他编码传输到Mysql的数据会转换成latin1编码。
知道了WEB开发中涉及到编码的地方,也就知道出现乱码的原因了:以上三种编码设置不一致。由于大多数各种编码都兼容ASCII,所以不会出现英文符号,中文会倒霉。.
五。决战的一些常见错误情况及解决办法:
1、 数据库使用UTF8编码,页面声明编码为GB2312,这是乱码最常见的原因。这时候直接在PHP脚本中SELECT数据就乱码了。查询前需要使用:mysql_query("SET NAMES GBK"); 设置MYSQL连接码,保证页面声明码与这里设置的连接码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码,可以使用:mysql_query("SET NAMES UTF8");
请注意,它是 UTF8 而不是一般的 UTF-8。如果页面上声明的代码与数据库的内部代码一致,则可能没有设置连接代码。
注:其实MYSQL的数据输入输出比上面说的还要复杂。MYSQL配置文件my.ini中定义了两个默认代码,分别是[client]中的默认-character-set和[mysqld]中的默认。-character-set 设置客户端连接和内部数据库中使用的默认编码。我们上面指定的编码其实就是MYSQL客户端连接服务器时的命令行参数character_set_client,告诉MYSQL服务器接收到的客户端数据是什么编码,而不是使用默认的编码。
2、 页面声明代码与文件本身不一致。这种情况很少发生,因为如果代码不一致,在创建页面时浏览器会看到乱码。更多的时候是发布后修改了一些小BUG,打开代码错误的页面然后保存造成的。或者使用一些FTP软件直接在线修改文件,比如CuteFTP,因为软件编码配置错误导致转换错误编码。
3、一些租虚拟主机的朋友,很明显上面三种编码设置正确或者出现乱码。比如网页是GB2312编码的,但是IE等浏览器打开时总是识别为UTF-8。网页的HEAD已经说明是GB2312了。手动修改浏览器编码为GB2312后,页面显示正常。原因是服务器Apache设置了服务器全局默认编码,在httpd.conf中添加了AddDefaultCharset UTF-8。这时候服务器会先把HTTP头发送给浏览器,它的优先级比页面中声明的代码要高,浏览器自然会误认。有两种解决方案,
php网页抓取乱码(php网页抓取乱码问题,我一般处理思路如下;)
网站优化 • 优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2021-11-13 14:03
php网页抓取乱码问题,我一般处理思路如下;1.先定位主体post数据包,上传方式的话可以通过schema字段判断;如果是md5之类可以进行除法分解2.打开数据包,读取源码,先看,不过千万不要为了调试这一步3.如果出错了,那就对post数据包做正则引擎匹配,看哪里不一样,一般是主体post的包过大,那么将主体包拆开,来看具体哪里不一样。4.最重要的是,你可以在网站后台监控结果,发现post数据包中的这些字段:。
1).data的alert方法需要request_user方法
2).multi_for_post方法
3).extract_in_params方法(当字段传入后,会将字段post方法的pattern重新编码)5.那么相应处理方法,比如匹配相同主体post数据包后,网站就会自动重新再生成一个新post数据包,如果发现文件太大,可以通过关闭服务器,或者其他手段解决,加上额外的防火墙或者其他。6.如果网站编码解码没有问题,问题就是发出去的数据包,不是同一种协议(也就是说,一般同一种协议的字符比较少)7.可以通过反向解析,通过检查网页是否被篡改过的方式解决,反正规模小的站,网页本身也不大。
这个问题不大,用代理就可以了。你说的一个页面一个post就是说明这个post数据相当于来自于一个局域网的post服务器,方法有:1.暴力破解2.通过跳转获取外部数据3.利用gzip压缩图片4.强加片段, 查看全部
php网页抓取乱码(php网页抓取乱码问题,我一般处理思路如下;)
php网页抓取乱码问题,我一般处理思路如下;1.先定位主体post数据包,上传方式的话可以通过schema字段判断;如果是md5之类可以进行除法分解2.打开数据包,读取源码,先看,不过千万不要为了调试这一步3.如果出错了,那就对post数据包做正则引擎匹配,看哪里不一样,一般是主体post的包过大,那么将主体包拆开,来看具体哪里不一样。4.最重要的是,你可以在网站后台监控结果,发现post数据包中的这些字段:。
1).data的alert方法需要request_user方法
2).multi_for_post方法
3).extract_in_params方法(当字段传入后,会将字段post方法的pattern重新编码)5.那么相应处理方法,比如匹配相同主体post数据包后,网站就会自动重新再生成一个新post数据包,如果发现文件太大,可以通过关闭服务器,或者其他手段解决,加上额外的防火墙或者其他。6.如果网站编码解码没有问题,问题就是发出去的数据包,不是同一种协议(也就是说,一般同一种协议的字符比较少)7.可以通过反向解析,通过检查网页是否被篡改过的方式解决,反正规模小的站,网页本身也不大。
这个问题不大,用代理就可以了。你说的一个页面一个post就是说明这个post数据相当于来自于一个局域网的post服务器,方法有:1.暴力破解2.通过跳转获取外部数据3.利用gzip压缩图片4.强加片段,
php网页抓取乱码(阿里云HTML网页源码乱码推荐活动:更多优惠gt)
网站优化 • 优采云 发表了文章 • 0 个评论 • 182 次浏览 • 2021-11-13 06:05
阿里云>云栖社区>主题图>H>获取网站源码乱码
推荐活动:
更多优惠>
当前话题:获取网站源码乱码加采集
相关话题:
获取网站源码乱码相关博客查看更多博客
彩虹二赞7.8源码破解版(去域名授权) 彩虹云任务系统无任何限制
作者:操张林2156人浏览评论:05年前
彩虹二赞7.7云任务系统全站源码,这里完全免费分享。功能还是很不错的。惊喜你最喜欢的朋友!以下文字为源码包中的介绍。具体功能和条件请自行下载测试:1.新界面,响应式布局,后台更多界面风格选项。2.使用ajax重写列表页面
阅读全文
C#HttpHelper爬虫类源码分享--苏飞版
作者:苏飞 2071人浏览评论:02年前
简介 C#HttpHelper实现了爬取C#HttpWebRequest时忽略代码、忽略证书、忽略cookie、实现代理的功能。有了它,您可以发出 Get 和 Post 请求,还可以轻松设置 cookie、证书、代理和编码。你不关心问题,因为类会自动为你识别页面
阅读全文
[IT]HTML网页源码的Charset解读
作者:sjf01151187 浏览评论人数:06年前
当你打开某个网站,也就是某个url地址,通过浏览器可以正常看到网页内容,各种文字都可以正常显示,不会出现乱码。这个过程涉及到浏览器帮你正确解析HTML源代码,这涉及到HTML网页源代码的字符编码处理。字符编码处理的一般逻辑是:
阅读全文
核心页面编码导致的中文乱码
作者:Jack Chen 1162人浏览评论:03年前
原文:core页面编码导致的中文乱码问题描述。最近用core写了一个简单的网站,在windows系统下完全没有问题。后来linux系统内置docker,linux自动使用git获取源码,编译部署一个
阅读全文
你不知道页面编码,浏览器选择编码,get,post和各种乱码的来源
作者:Jack Chen 1123人浏览评论:07年前
原文:你不知道的页面编码,浏览器选择编码,get,post各种乱码的origin页面编码和浏览器选择编码每个朋友都知道,在visual studio新版本中,无需任何设置,创建时默认编码新页面是 utf-8。我们可以从两个地方选择
阅读全文
CTF---密码学概论题号,这里没有key
作者:angel_kitty822 浏览评论人数:04年前
这里没有关键分数:10 来源:西浦学院 难度:容易 参加人数:5577 获得旗帜:1965 回答数:2074 通过率:95% 如果你没有它,没有,我为什么要听给你解决问题的链接::8080/
阅读全文
使用HttpWebRequest和HtmlAgilityPack抓取网页(拒绝乱码,拒绝正则表达式)
作者:Jack Chen 819人浏览评论:07年前
原文:使用HttpWebRequest和HtmlAgilityPack抓取网页(拒绝乱码,拒绝正则表达式)。废话不多说,只说需求。公司的网站要抢其他网站的文章,可是任务没来找我,同事一下午都没搞出来。因为刚到公司,我想证明自己,所以就接受了这份工作。
阅读全文
获取JS动态内容
作者:小科技专家682人浏览评论:04年前
我们之前抓取的网页大多是 HTML 静态生成的内容。您可以直接从 HTML 源代码中找到您看到的数据和内容。然而,并不是所有的网页都是这样。网站的部分内容是前端JS动态生成的。由于网页呈现的内容是由JS生成的,我们可以在浏览器上看到,但是在HTML源代码中是找不到的。
阅读全文
获取网站源码乱码相关问答
【Java学习全家桶】1460道Java热点题,百位阿里巴巴技术专家答疑解惑
作者:管理贝贝19522人浏览评论:153年前
阿里极客公益活动:也许你选择为一个问题夜战,也许你迷茫只是寻求答案,也许你只是因为一个未知而绞尽脑汁,那么他们来了,阿里巴巴技术专家来云栖为您解答技术问题。他们使用自己手中的技术来帮助用户成长。本次活动邀请数百位阿里巴巴技术
阅读全文 查看全部
php网页抓取乱码(阿里云HTML网页源码乱码推荐活动:更多优惠gt)
阿里云>云栖社区>主题图>H>获取网站源码乱码

推荐活动:
更多优惠>
当前话题:获取网站源码乱码加采集
相关话题:
获取网站源码乱码相关博客查看更多博客
彩虹二赞7.8源码破解版(去域名授权) 彩虹云任务系统无任何限制


作者:操张林2156人浏览评论:05年前
彩虹二赞7.7云任务系统全站源码,这里完全免费分享。功能还是很不错的。惊喜你最喜欢的朋友!以下文字为源码包中的介绍。具体功能和条件请自行下载测试:1.新界面,响应式布局,后台更多界面风格选项。2.使用ajax重写列表页面
阅读全文
C#HttpHelper爬虫类源码分享--苏飞版


作者:苏飞 2071人浏览评论:02年前
简介 C#HttpHelper实现了爬取C#HttpWebRequest时忽略代码、忽略证书、忽略cookie、实现代理的功能。有了它,您可以发出 Get 和 Post 请求,还可以轻松设置 cookie、证书、代理和编码。你不关心问题,因为类会自动为你识别页面
阅读全文
[IT]HTML网页源码的Charset解读

作者:sjf01151187 浏览评论人数:06年前
当你打开某个网站,也就是某个url地址,通过浏览器可以正常看到网页内容,各种文字都可以正常显示,不会出现乱码。这个过程涉及到浏览器帮你正确解析HTML源代码,这涉及到HTML网页源代码的字符编码处理。字符编码处理的一般逻辑是:
阅读全文
核心页面编码导致的中文乱码


作者:Jack Chen 1162人浏览评论:03年前
原文:core页面编码导致的中文乱码问题描述。最近用core写了一个简单的网站,在windows系统下完全没有问题。后来linux系统内置docker,linux自动使用git获取源码,编译部署一个
阅读全文
你不知道页面编码,浏览器选择编码,get,post和各种乱码的来源


作者:Jack Chen 1123人浏览评论:07年前
原文:你不知道的页面编码,浏览器选择编码,get,post各种乱码的origin页面编码和浏览器选择编码每个朋友都知道,在visual studio新版本中,无需任何设置,创建时默认编码新页面是 utf-8。我们可以从两个地方选择
阅读全文
CTF---密码学概论题号,这里没有key


作者:angel_kitty822 浏览评论人数:04年前
这里没有关键分数:10 来源:西浦学院 难度:容易 参加人数:5577 获得旗帜:1965 回答数:2074 通过率:95% 如果你没有它,没有,我为什么要听给你解决问题的链接::8080/
阅读全文
使用HttpWebRequest和HtmlAgilityPack抓取网页(拒绝乱码,拒绝正则表达式)


作者:Jack Chen 819人浏览评论:07年前
原文:使用HttpWebRequest和HtmlAgilityPack抓取网页(拒绝乱码,拒绝正则表达式)。废话不多说,只说需求。公司的网站要抢其他网站的文章,可是任务没来找我,同事一下午都没搞出来。因为刚到公司,我想证明自己,所以就接受了这份工作。
阅读全文
获取JS动态内容


作者:小科技专家682人浏览评论:04年前
我们之前抓取的网页大多是 HTML 静态生成的内容。您可以直接从 HTML 源代码中找到您看到的数据和内容。然而,并不是所有的网页都是这样。网站的部分内容是前端JS动态生成的。由于网页呈现的内容是由JS生成的,我们可以在浏览器上看到,但是在HTML源代码中是找不到的。
阅读全文
获取网站源码乱码相关问答
【Java学习全家桶】1460道Java热点题,百位阿里巴巴技术专家答疑解惑

作者:管理贝贝19522人浏览评论:153年前
阿里极客公益活动:也许你选择为一个问题夜战,也许你迷茫只是寻求答案,也许你只是因为一个未知而绞尽脑汁,那么他们来了,阿里巴巴技术专家来云栖为您解答技术问题。他们使用自己手中的技术来帮助用户成长。本次活动邀请数百位阿里巴巴技术
阅读全文
php网页抓取乱码(php网页抓取乱码可以用urllib2来解决,python爬虫乱码)
网站优化 • 优采云 发表了文章 • 0 个评论 • 50 次浏览 • 2021-11-11 14:03
php网页抓取乱码,可以用urllib2来解决,python爬虫乱码,可以用requests库,这两个都是标准的http库。有两个问题需要明确一下,一个是php的urllib2库一般只能获取静态网页,如果实在要获取动态的html文件(网页源码),有一个parser模块可以提供动态获取url的一些方法。
另一个是非智能化网页,例如api,这种网页往往比较多,很多api会提供域名为本站,并且提供了正则表达式、exp、securehttpserver等服务,这个时候使用httpclient(一般和http模块一起使用)是一个不错的选择。而requests模块和urllib2差不多,可以解决大部分的网页,如果需要使用动态网页的爬虫,比如xmlhttprequest模块可以使用更智能化的封装,那就需要自己封装一些http请求库(如requests库)。参考:。
1、phpurllib2网页抓取解决乱码问题-allgeneric的博客-csdn博客
2、php解决http加载乱码问题-allgeneric的博客-csdn博客
3、phpaccept包装http网页乱码问题-allgeneric的博客-csdn博客php网页加载乱码解决-allgeneric的博客-csdn博客(我建议抓取网页使用标准的http库)
1、网页对于人,怎么加载有规律,有规定。
2、网页对于机器,怎么连接,怎么加载,没有特定的规则。
3、所有这些实现并不等于就应该怎么返回。 查看全部
php网页抓取乱码(php网页抓取乱码可以用urllib2来解决,python爬虫乱码)
php网页抓取乱码,可以用urllib2来解决,python爬虫乱码,可以用requests库,这两个都是标准的http库。有两个问题需要明确一下,一个是php的urllib2库一般只能获取静态网页,如果实在要获取动态的html文件(网页源码),有一个parser模块可以提供动态获取url的一些方法。
另一个是非智能化网页,例如api,这种网页往往比较多,很多api会提供域名为本站,并且提供了正则表达式、exp、securehttpserver等服务,这个时候使用httpclient(一般和http模块一起使用)是一个不错的选择。而requests模块和urllib2差不多,可以解决大部分的网页,如果需要使用动态网页的爬虫,比如xmlhttprequest模块可以使用更智能化的封装,那就需要自己封装一些http请求库(如requests库)。参考:。
1、phpurllib2网页抓取解决乱码问题-allgeneric的博客-csdn博客
2、php解决http加载乱码问题-allgeneric的博客-csdn博客
3、phpaccept包装http网页乱码问题-allgeneric的博客-csdn博客php网页加载乱码解决-allgeneric的博客-csdn博客(我建议抓取网页使用标准的http库)
1、网页对于人,怎么加载有规律,有规定。
2、网页对于机器,怎么连接,怎么加载,没有特定的规则。
3、所有这些实现并不等于就应该怎么返回。
php网页抓取乱码(使用iconv-lite解决request乱码问题.js抓取非utf-8 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 50 次浏览 • 2021-11-10 01:10
)
使用 iconv-lite 解决请求乱码问题
Node.js 在抓取非 utf-8 中文网页时会遇到乱码。比如网易的首页代码是gb2312,爬取就会出现乱码。
var request = require('request')
var url = 'http://www.163.com'
request(url, function (err, res, body) {
console.log(body)
})
可以使用 iconv-lite 来解决
安装
npm install iconv-lite
同时我们会修改user-agent来防止网站阻塞:
var originRequest = require('request')
var iconv = require('iconv-lite')
var headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
}
function request (url, callback) {
var options = {
url: url,
encoding: null,
headers: headers
}
originRequest(options, callback)
}
request(url, function (err, res, body) {
var html = iconv.decode(body, 'gb2312')
console.log(html)
})
解决乱码问题
使用cheerio解析HTML
cheerio 可以简单粗暴的理解为一个服务端的jQuery选择器,有了它,它比普通的更直观
安装
npm install cheerio
request(url, function (err, res, body) {
var html = iconv.decode(body, 'gb2312')
var $ = cheerio.load(html)
console.log($('h1').text())
console.log($('h1').html())
})
输出如下
网易
网易
那么问题来了,$('h1').html()输出的代码是Unicode编码的,网易变成了网易,给我们的字符处理带来了一些麻烦
解决cheerio .html()“乱码”的问题
查看一下,可以关闭转换实体代码的功能
var $ = cheerio.load(html)
改为
var $ = cheerio.load(html, {decodeEntities: false})
好的,完整代码如下:
var originRequest = require('request')
var cheerio = require('cheerio')
var iconv = require('iconv-lite')
var headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
}
function request (url, callback) {
var options = {
url: url,
encoding: null,
headers: headers
}
originRequest(options, callback)
}
var url = 'http://www.163.com'
request(url, function (err, res, body) {
var html = iconv.decode(body, 'gb2312')
var $ = cheerio.load(html, {decodeEntities: false})
console.log($('h1').text())
console.log($('h1').html())
}) 查看全部
php网页抓取乱码(使用iconv-lite解决request乱码问题.js抓取非utf-8
)
使用 iconv-lite 解决请求乱码问题
Node.js 在抓取非 utf-8 中文网页时会遇到乱码。比如网易的首页代码是gb2312,爬取就会出现乱码。
var request = require('request')
var url = 'http://www.163.com'
request(url, function (err, res, body) {
console.log(body)
})
可以使用 iconv-lite 来解决
安装
npm install iconv-lite
同时我们会修改user-agent来防止网站阻塞:
var originRequest = require('request')
var iconv = require('iconv-lite')
var headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
}
function request (url, callback) {
var options = {
url: url,
encoding: null,
headers: headers
}
originRequest(options, callback)
}
request(url, function (err, res, body) {
var html = iconv.decode(body, 'gb2312')
console.log(html)
})
解决乱码问题
使用cheerio解析HTML
cheerio 可以简单粗暴的理解为一个服务端的jQuery选择器,有了它,它比普通的更直观
安装
npm install cheerio
request(url, function (err, res, body) {
var html = iconv.decode(body, 'gb2312')
var $ = cheerio.load(html)
console.log($('h1').text())
console.log($('h1').html())
})
输出如下
网易
网易
那么问题来了,$('h1').html()输出的代码是Unicode编码的,网易变成了网易,给我们的字符处理带来了一些麻烦
解决cheerio .html()“乱码”的问题
查看一下,可以关闭转换实体代码的功能
var $ = cheerio.load(html)
改为
var $ = cheerio.load(html, {decodeEntities: false})
好的,完整代码如下:
var originRequest = require('request')
var cheerio = require('cheerio')
var iconv = require('iconv-lite')
var headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
}
function request (url, callback) {
var options = {
url: url,
encoding: null,
headers: headers
}
originRequest(options, callback)
}
var url = 'http://www.163.com'
request(url, function (err, res, body) {
var html = iconv.decode(body, 'gb2312')
var $ = cheerio.load(html, {decodeEntities: false})
console.log($('h1').text())
console.log($('h1').html())
})
php网页抓取乱码(什么是这是的编码?的方式解决乱码问题? )
网站优化 • 优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2021-11-09 01:01
)
2、 如果上面的方法不行,页面还是乱码;或者在head标签下找不到charset属性;或者我们要采集很多网页,而这些网页的编码方式都不一样,我们不可能在一个网页上一一查看head标签,所以可以采用以下方法用来解决乱码。
(1)python 的 chardet 库
可以使用以下方法解决乱码问题
result = chardet.detect(response.content)
print(result)
data = response.content.decode(chardet.detect(response.content)['encoding'])
{'confidence': 0.99, 'language': '', 'encoding': 'utf-8'}
从输出结果可以看出,这是一个“猜测”代码。猜测的方法是先采集各种代码的特征字符。根据特征人物的判断,“猜对”的概率很高。
这种方法的效率非常低。如果采集的网页很大,你只能猜测其中一部分的源代码,即
result = chardet.detect(response.content[:1000])
(2)响应编码
也可以使用另一种方法,response自身的编码和apparent_encoding这两个变量。
Response.encoding 一般来自 response.headers 中 content-type 字段的 charset 值。其他情况我不太了解。
response.apparent_encoding 一般使用上面提到的python chardet 库。
所以可以使用下面的方式来解决乱码问题
data = response.content.decode(response.apparent_encoding)
3、 一般来说,以上两种方法都可以解决乱码问题。但如果以上两种方法都不能解决,则可能是网页压缩造成的。使用以下方法解决此问题。
检查你写的头信息是否收录Accept-Encoding字段。如果是,请删除此字段。乱码问题将得到解决。
headers = {
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/49.0.2623.221
Safari/537.36 SE 2.X MetaSr 1.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Connection': 'keep-alive',
} 查看全部
php网页抓取乱码(什么是这是的编码?的方式解决乱码问题?
)
2、 如果上面的方法不行,页面还是乱码;或者在head标签下找不到charset属性;或者我们要采集很多网页,而这些网页的编码方式都不一样,我们不可能在一个网页上一一查看head标签,所以可以采用以下方法用来解决乱码。
(1)python 的 chardet 库
可以使用以下方法解决乱码问题
result = chardet.detect(response.content)
print(result)
data = response.content.decode(chardet.detect(response.content)['encoding'])
{'confidence': 0.99, 'language': '', 'encoding': 'utf-8'}
从输出结果可以看出,这是一个“猜测”代码。猜测的方法是先采集各种代码的特征字符。根据特征人物的判断,“猜对”的概率很高。
这种方法的效率非常低。如果采集的网页很大,你只能猜测其中一部分的源代码,即
result = chardet.detect(response.content[:1000])
(2)响应编码
也可以使用另一种方法,response自身的编码和apparent_encoding这两个变量。
Response.encoding 一般来自 response.headers 中 content-type 字段的 charset 值。其他情况我不太了解。
response.apparent_encoding 一般使用上面提到的python chardet 库。
所以可以使用下面的方式来解决乱码问题
data = response.content.decode(response.apparent_encoding)
3、 一般来说,以上两种方法都可以解决乱码问题。但如果以上两种方法都不能解决,则可能是网页压缩造成的。使用以下方法解决此问题。
检查你写的头信息是否收录Accept-Encoding字段。如果是,请删除此字段。乱码问题将得到解决。
headers = {
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/49.0.2623.221
Safari/537.36 SE 2.X MetaSr 1.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Connection': 'keep-alive',
}
php网页抓取乱码(将数据插入到php(BF%%CA%FD))
网站优化 • 优采云 发表了文章 • 0 个评论 • 58 次浏览 • 2021-11-08 17:03
php?name=%CA%FD%BE%DD%BF%E2插入数据时"onclick="tagshow(event)"class="t_tag">数据库会显示乱码,从php?name读取=% CA%FD%BE%DD%BF%E2"onclick="tagshow(event)"class="t_tag">从数据库读取的数据在网页上显示为乱码的问题其实是要做的php?name=% CA%FD%BE%DD%BF%E2"onclick="tagshow(event)"class="t_tag">数据库编码,网页编码和表格编码相同)!GBK2312同下
(1)设置数据库编码,为了符合国际标准,一般设置为utf-8
(2)数据表设置也设为utf-8
(3)设置你的网页编码为utf-8,打开Dreamweaver,(修改)--(页面属性)
(4)添加标题("Content-Type:text/html;charset=utf-8");
(5)mysql_query('setnamesutf8'); 操作应该在对数据进行操作之前进行,然后对数据进行查询、更新、插入等操作 查看全部
php网页抓取乱码(将数据插入到php(BF%%CA%FD))
php?name=%CA%FD%BE%DD%BF%E2插入数据时"onclick="tagshow(event)"class="t_tag">数据库会显示乱码,从php?name读取=% CA%FD%BE%DD%BF%E2"onclick="tagshow(event)"class="t_tag">从数据库读取的数据在网页上显示为乱码的问题其实是要做的php?name=% CA%FD%BE%DD%BF%E2"onclick="tagshow(event)"class="t_tag">数据库编码,网页编码和表格编码相同)!GBK2312同下
(1)设置数据库编码,为了符合国际标准,一般设置为utf-8
(2)数据表设置也设为utf-8
(3)设置你的网页编码为utf-8,打开Dreamweaver,(修改)--(页面属性)
(4)添加标题("Content-Type:text/html;charset=utf-8");
(5)mysql_query('setnamesutf8'); 操作应该在对数据进行操作之前进行,然后对数据进行查询、更新、插入等操作
php网页抓取乱码(如何判断网页的编码和网页代码中的字符编码? )
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2021-11-07 06:07
)
在使用python 2抓取网页时,经常会遇到抓取到的内容显示乱码。
出现这种情况最有可能是编码问题:运行环境的字符编码与网页的字符编码不一致。
例如,我在 windows 控制台 (gbk) 中抓取了一个 utf-8 编码的 网站。或者,在Mac/Linux终端抓一个gbk编码的网站(utf-8)。因为大多数网站使用的是utf-8编码,而且很多人用的是Windows,所有这种情况相当普遍。
如果你发现你抓取的内容在英文、数字、符号上看起来都是正确的,但是中间出现了一些乱码,你基本可以断定是这样的。
解决这个问题的办法是先按照网页的编码方式将结果解码成unicode,然后输出。如果不确定网页的编码,可以参考以下代码:
import urllib
req = urllib.urlopen("http://some.web.site")
info = req.info()
charset = info.getparam('charset')
content = req.read()
print content.decode(charset, 'ignore')
复制代码
'ignore' 参数的作用是忽略无法解码的字符。
然而,这种方法并不总是有效。另一种方式是通过正则化直接匹配网页代码中的编码设置:
复制代码
除了编码问题导致的乱码外,还有一种情况经常被忽略,那就是登陆页面开启了gzip压缩。压缩后的网页传输的数据更少,打开速度更快。在浏览器中打开时,浏览器会根据网页的header信息自动解压。但是直接用代码去抢就不行了。所以,很可能会疑惑,为什么打开网页地址明了,但是程序爬取却不行。就连我自己也被这个问题愚弄了。
这种情况的表现就是抓取的内容几乎都是乱码,甚至无法显示。
判断网页是否开启压缩并解压,可以参考如下代码:
import urllib
import gzip
from StringIO import StringIO
req = urllib.urlopen("http://some.web.site")
info = req.info()
encoding = info.getheader('Content-Encoding')
content = req.read()
if encoding == 'gzip':
buf = StringIO(content)
gf = gzip.GzipFile(fileobj=buf)
content = gf.read()
print content
复制代码
在我们课堂上查看天气系列的编程实例(点击查看),这两个问题困扰了不少人。这里有一个特别的解释。
最后,还有另一种“武器”要介绍。如果你第一次使用它,你甚至不知道上面两个问题仍然存在。
这是请求模块。
以同样的方式抓取网页,您只需要:
import requests
print requests.get("http://some.web.site").text
复制代码
没有编码问题,没有压缩问题。
这就是我喜欢 Python 的原因。
至于如何安装requests模块,请参考前面的文章:
Python-Crossin的编程课堂如何安装第三方模块-知乎专栏
pip install requests
复制代码
其他 文章 和回答:
查看全部
php网页抓取乱码(如何判断网页的编码和网页代码中的字符编码?
)
在使用python 2抓取网页时,经常会遇到抓取到的内容显示乱码。
出现这种情况最有可能是编码问题:运行环境的字符编码与网页的字符编码不一致。
例如,我在 windows 控制台 (gbk) 中抓取了一个 utf-8 编码的 网站。或者,在Mac/Linux终端抓一个gbk编码的网站(utf-8)。因为大多数网站使用的是utf-8编码,而且很多人用的是Windows,所有这种情况相当普遍。
如果你发现你抓取的内容在英文、数字、符号上看起来都是正确的,但是中间出现了一些乱码,你基本可以断定是这样的。
解决这个问题的办法是先按照网页的编码方式将结果解码成unicode,然后输出。如果不确定网页的编码,可以参考以下代码:
import urllib
req = urllib.urlopen("http://some.web.site")
info = req.info()
charset = info.getparam('charset')
content = req.read()
print content.decode(charset, 'ignore')
复制代码
'ignore' 参数的作用是忽略无法解码的字符。
然而,这种方法并不总是有效。另一种方式是通过正则化直接匹配网页代码中的编码设置:
复制代码
除了编码问题导致的乱码外,还有一种情况经常被忽略,那就是登陆页面开启了gzip压缩。压缩后的网页传输的数据更少,打开速度更快。在浏览器中打开时,浏览器会根据网页的header信息自动解压。但是直接用代码去抢就不行了。所以,很可能会疑惑,为什么打开网页地址明了,但是程序爬取却不行。就连我自己也被这个问题愚弄了。
这种情况的表现就是抓取的内容几乎都是乱码,甚至无法显示。
判断网页是否开启压缩并解压,可以参考如下代码:
import urllib
import gzip
from StringIO import StringIO
req = urllib.urlopen("http://some.web.site")
info = req.info()
encoding = info.getheader('Content-Encoding')
content = req.read()
if encoding == 'gzip':
buf = StringIO(content)
gf = gzip.GzipFile(fileobj=buf)
content = gf.read()
print content
复制代码
在我们课堂上查看天气系列的编程实例(点击查看),这两个问题困扰了不少人。这里有一个特别的解释。
最后,还有另一种“武器”要介绍。如果你第一次使用它,你甚至不知道上面两个问题仍然存在。
这是请求模块。
以同样的方式抓取网页,您只需要:
import requests
print requests.get("http://some.web.site").text
复制代码
没有编码问题,没有压缩问题。
这就是我喜欢 Python 的原因。
至于如何安装requests模块,请参考前面的文章:
Python-Crossin的编程课堂如何安装第三方模块-知乎专栏
pip install requests
复制代码
其他 文章 和回答:
php网页抓取乱码(php程序员如何在php中支持fastjson解决呢?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 54 次浏览 • 2021-11-06 00:03
php网页抓取乱码是php程序程序员常遇到的问题之一,通常来说php程序员可以使用fastjson解决,但如果涉及到抓取一些公开数据库数据的话,用fastjson来解决仍然是一个不错的选择。那么究竟如何在php中支持fastjson呢?这里我们使用的是php源码编译安装,方法很简单,先下载php源码并编译成php源码,然后,执行php+./configure,这样就可以安装了。
参考上面的方法,我们编译成了./configure。这样在执行php+./configure的时候,php会自动执行我们的./configure./configure,避免了有些时候处于fastjson版本问题而需要去抓取公开的数据库数据。
if-equiv="sign":locale="en_us.utf-8"else:locale="en_us.utf-8"
楼上说的都不错,补充一个,php-pcre包括了ctype和ole的数据格式。
configure。
fastjson有两种形式,标准数据格式和xml格式;标准数据格式是php开发语言和fastjson数据库都支持的;但是xml格式需要下载require库,对于php语言来说还是不太友好,可以再配置文件中加入xmlhttprequest,就可以直接使用require的xmlgetformdata来实现网页的数据请求了。
php-pcre。打开终端,cd到你需要编译的文件夹,把require的xmlize.php文件拷贝到你的xml目录中, 查看全部
php网页抓取乱码(php程序员如何在php中支持fastjson解决呢?)
php网页抓取乱码是php程序程序员常遇到的问题之一,通常来说php程序员可以使用fastjson解决,但如果涉及到抓取一些公开数据库数据的话,用fastjson来解决仍然是一个不错的选择。那么究竟如何在php中支持fastjson呢?这里我们使用的是php源码编译安装,方法很简单,先下载php源码并编译成php源码,然后,执行php+./configure,这样就可以安装了。
参考上面的方法,我们编译成了./configure。这样在执行php+./configure的时候,php会自动执行我们的./configure./configure,避免了有些时候处于fastjson版本问题而需要去抓取公开的数据库数据。
if-equiv="sign":locale="en_us.utf-8"else:locale="en_us.utf-8"
楼上说的都不错,补充一个,php-pcre包括了ctype和ole的数据格式。
configure。
fastjson有两种形式,标准数据格式和xml格式;标准数据格式是php开发语言和fastjson数据库都支持的;但是xml格式需要下载require库,对于php语言来说还是不太友好,可以再配置文件中加入xmlhttprequest,就可以直接使用require的xmlgetformdata来实现网页的数据请求了。
php-pcre。打开终端,cd到你需要编译的文件夹,把require的xmlize.php文件拷贝到你的xml目录中,
php网页抓取乱码(《PHP视频教程》抓取乱码的解决办法:这样乱码解决方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 77 次浏览 • 2021-12-01 22:05
php网页抓取乱码的解决方法:1、使用“mbconvertencoding”进行编码转换; 2、添加"curl_setopt($ch, CURLOPT_ENCODING,'gzip');"选项; 3、在顶部添加标题代码。
推荐:《PHP 视频教程》
php抓取页面乱码
在抓取页面时出现类似...的乱码,解决方法如下
1、转换码
str=mbconvertencoding(str, “utf-8”, “GBK”);
2、数据被gzip压缩
curl 获取数据时,设置并添加以下选项:
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
需要安装zlib库才能使用file_get_contents函数
$data = file_get_contents("compress.zlib://".$url);
3、获取数据后显示乱码
在顶部添加以下代码
header("Content-type: text/html; charset=utf-8");
以上就是解决php网页乱码爬取问题的详细内容。更多详情请关注其他相关php中文网站文章!
免责声明:本文由原创发表于php中文网。转载请注明出处。感谢您的尊重!如果您有任何问题,请联系我们 查看全部
php网页抓取乱码(《PHP视频教程》抓取乱码的解决办法:这样乱码解决方法)
php网页抓取乱码的解决方法:1、使用“mbconvertencoding”进行编码转换; 2、添加"curl_setopt($ch, CURLOPT_ENCODING,'gzip');"选项; 3、在顶部添加标题代码。

推荐:《PHP 视频教程》
php抓取页面乱码
在抓取页面时出现类似...的乱码,解决方法如下
1、转换码
str=mbconvertencoding(str, “utf-8”, “GBK”);
2、数据被gzip压缩
curl 获取数据时,设置并添加以下选项:
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
需要安装zlib库才能使用file_get_contents函数
$data = file_get_contents("compress.zlib://".$url);
3、获取数据后显示乱码
在顶部添加以下代码
header("Content-type: text/html; charset=utf-8");
以上就是解决php网页乱码爬取问题的详细内容。更多详情请关注其他相关php中文网站文章!

免责声明:本文由原创发表于php中文网。转载请注明出处。感谢您的尊重!如果您有任何问题,请联系我们
php网页抓取乱码(php网页抓取乱码的解决办法��这样解决方法!)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2021-12-01 22:03
php网页抓取乱码的解决方法?这个问题在我们日常的学习或工作中可能会经常看到。希望这个问题能给你带来很多收获。以下是小编给大家带来的参考内容,一起来看看吧!
php网页抓取乱码的解决方法:1、使用“mbconvertencoding”进行编码转换;2、 设置为添加“curl_setopt($ch, CURLOPT_ENCODING,'gzip');” 选项; 3、 在顶部添加标题代码。
php抓取页面乱码
抓取页面时,出现如下乱码。解决方法如下
1、转换码
str=mbconvertencoding(str, “utf-8”, “GBK”);
2、数据通过gzip压缩
当 curl 获取数据时,设置并添加以下选项:
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
使用file_get_contents函数需要安装zlib库
$data = file_get_contents("compress.zlib://".$url);
3、 获取数据后显示乱码
在顶部添加以下代码
header("Content-type: text/html; charset=utf-8");
感谢您的阅读!看完以上内容,你对php网页乱码爬取的解决方法有大致的了解了吗?希望文章的内容对大家有帮助。如果您想了解更多文章内容,欢迎关注易速云行业资讯频道。 查看全部
php网页抓取乱码(php网页抓取乱码的解决办法��这样解决方法!)
php网页抓取乱码的解决方法?这个问题在我们日常的学习或工作中可能会经常看到。希望这个问题能给你带来很多收获。以下是小编给大家带来的参考内容,一起来看看吧!
php网页抓取乱码的解决方法:1、使用“mbconvertencoding”进行编码转换;2、 设置为添加“curl_setopt($ch, CURLOPT_ENCODING,'gzip');” 选项; 3、 在顶部添加标题代码。

php抓取页面乱码
抓取页面时,出现如下乱码。解决方法如下
1、转换码
str=mbconvertencoding(str, “utf-8”, “GBK”);
2、数据通过gzip压缩
当 curl 获取数据时,设置并添加以下选项:
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
使用file_get_contents函数需要安装zlib库
$data = file_get_contents("compress.zlib://".$url);
3、 获取数据后显示乱码
在顶部添加以下代码
header("Content-type: text/html; charset=utf-8");
感谢您的阅读!看完以上内容,你对php网页乱码爬取的解决方法有大致的了解了吗?希望文章的内容对大家有帮助。如果您想了解更多文章内容,欢迎关注易速云行业资讯频道。
php网页抓取乱码(1.PHP页面语言本身的编码类型不合适,怎么办)
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2021-12-01 00:14
原因:1.PHP页面语言本身的编码类型不合适。这时候你直接在脚本里写的中文肯定是乱码,更别说数据库了;
解决方法:选择'UTF8'或'gb2312',这样客户端浏览器会自动选择并显示正确的中文显示。注意:'UTF8'或'gb2312'可以正确显示中文。
2. 数据库MySQL中的编码类型不正确。
解决方法:创建数据库时,MySQL字符集选择'UTF8',MySQL连接校对选择utf8_general_ci,这样创建存储中文的数据库就没有问题了。
否则你的中文会先在MySQL中出现乱码,别指望在PHP页面上为你正确显示。
3. 与通常的脚本编辑环境有关。比如有些内容是用Word写的,有些是用记事本写的,还有一些是用editplus、ultraplus等文本编辑器写的。有时我直接在DW里写中文,
如果你没有以这种方式得到乱码就很奇怪了。
解决方案:尝试使用相同的编辑器。如果复制现有内容,建议使用ultraplus中的代码转换功能,将其转换为utf8或gb2312。
转换成什么类型无所谓,关键是你的PHP WEB应用中的编码必须一致。
4.以编程方式访问MySQL时,建议添加一行代码:mysql_query("SET NAMES'GBK'"); 查看全部
php网页抓取乱码(1.PHP页面语言本身的编码类型不合适,怎么办)
原因:1.PHP页面语言本身的编码类型不合适。这时候你直接在脚本里写的中文肯定是乱码,更别说数据库了;
解决方法:选择'UTF8'或'gb2312',这样客户端浏览器会自动选择并显示正确的中文显示。注意:'UTF8'或'gb2312'可以正确显示中文。
2. 数据库MySQL中的编码类型不正确。
解决方法:创建数据库时,MySQL字符集选择'UTF8',MySQL连接校对选择utf8_general_ci,这样创建存储中文的数据库就没有问题了。
否则你的中文会先在MySQL中出现乱码,别指望在PHP页面上为你正确显示。
3. 与通常的脚本编辑环境有关。比如有些内容是用Word写的,有些是用记事本写的,还有一些是用editplus、ultraplus等文本编辑器写的。有时我直接在DW里写中文,
如果你没有以这种方式得到乱码就很奇怪了。
解决方案:尝试使用相同的编辑器。如果复制现有内容,建议使用ultraplus中的代码转换功能,将其转换为utf8或gb2312。
转换成什么类型无所谓,关键是你的PHP WEB应用中的编码必须一致。
4.以编程方式访问MySQL时,建议添加一行代码:mysql_query("SET NAMES'GBK'");
php网页抓取乱码(出现乱码的原因分析及解决方法有哪些呢?(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2021-11-30 15:08
一、乱码原因分析
1.保存文件时,文件有自己的文件编码,是汉字还是其他语言,用什么编码来存储
2.输出时,指定内容的编码,如以网页形式输入时
3.从数据库中取数据时,不确定数据库和字符集
4、以汉字为例。汉字也被编码。一个汉字 gbk 需要两个字符,而 utf8 需要三个字符。
可能导致乱码的潜在原因上面已经说了,我现在整理一下。
第一种情况,保存的文件和显示代码不一致
如果保存文件时使用utf8编码,则输出网页时设置了gbk编码,所以会出现乱码。
第二种情况,保存的文件和数据库中存储的字符不一致
假设,当保存的文件的编码与网页显示的编码相同时,仍然出现乱码。例如,当您保存文件时,您使用 utf8 编码,而您的数据库使用 gb2312 字符集来存储数据。
第三种情况,代码乱码,你还觉得没有
当你发现乱码的时候,当你改变保存文件的编码时,utf8的情况就好了。改成gbk会乱码,但是你觉得还好。这也是出现乱码的原因。这种情况会经常发生。
第四种情况,数据库天生乱码
数据的字符集,保存文件的编码,网页显示的编码都是一样的,但是出现乱码。大多数情况下,当数据进入数据库时,会出现乱码。这种情况比较麻烦。
2.我的解决乱码的方法不尽人意。
我把这个方法命名为泡顶解牛法。哈哈。数据库,保存文件编码,显示时编码必须一致,以数据库为准
首先是数据库和保存文件的编码是utf8,网页显示是gb2312。这时候我们需要改变显示编码
二是数据库和网页显示都是utf8,文件使用gb2312保存。这时候就要注意一个。无法直接更改保存文件的编码。在更改编码之前,请先更改文件的内容。COPY,改编码后,把COPY的内容贴回去,就OK了。
第三种是数据库使用的utf8。保存文件和显示的编码是gb2312。这时候就可以利用程序的功能,对从数据库中检索到的数据进行转码,将utf8转为gb2312,这样就不用改了。文件本身的编码已更改,并且已显示编码。以php为例,mb_convert_encoding($string,"gb2312","utf8");
第四种,数据库中的乱码,是在数据录入时,数据本身与数据库的存储码不同造成的。例如:数据库的存储代码是utf8,当数据存储在数据库中时,添加一个mysql_query("set names utf8;");
三、乱码表现的情况
乱码的表现,我遇到过两个,
1)是字体中出现的乱码,变成了奇怪的字符
2) 只是一个空白页。检查源代码时,什么都没有。在这种情况下,有时,我认为它是由乱码引起的。页面右击,查看属性,修改代码就知道是不是乱码导致的空白页。 查看全部
php网页抓取乱码(出现乱码的原因分析及解决方法有哪些呢?(图))
一、乱码原因分析
1.保存文件时,文件有自己的文件编码,是汉字还是其他语言,用什么编码来存储
2.输出时,指定内容的编码,如以网页形式输入时
3.从数据库中取数据时,不确定数据库和字符集
4、以汉字为例。汉字也被编码。一个汉字 gbk 需要两个字符,而 utf8 需要三个字符。
可能导致乱码的潜在原因上面已经说了,我现在整理一下。
第一种情况,保存的文件和显示代码不一致
如果保存文件时使用utf8编码,则输出网页时设置了gbk编码,所以会出现乱码。
第二种情况,保存的文件和数据库中存储的字符不一致
假设,当保存的文件的编码与网页显示的编码相同时,仍然出现乱码。例如,当您保存文件时,您使用 utf8 编码,而您的数据库使用 gb2312 字符集来存储数据。
第三种情况,代码乱码,你还觉得没有
当你发现乱码的时候,当你改变保存文件的编码时,utf8的情况就好了。改成gbk会乱码,但是你觉得还好。这也是出现乱码的原因。这种情况会经常发生。
第四种情况,数据库天生乱码
数据的字符集,保存文件的编码,网页显示的编码都是一样的,但是出现乱码。大多数情况下,当数据进入数据库时,会出现乱码。这种情况比较麻烦。
2.我的解决乱码的方法不尽人意。
我把这个方法命名为泡顶解牛法。哈哈。数据库,保存文件编码,显示时编码必须一致,以数据库为准
首先是数据库和保存文件的编码是utf8,网页显示是gb2312。这时候我们需要改变显示编码
二是数据库和网页显示都是utf8,文件使用gb2312保存。这时候就要注意一个。无法直接更改保存文件的编码。在更改编码之前,请先更改文件的内容。COPY,改编码后,把COPY的内容贴回去,就OK了。
第三种是数据库使用的utf8。保存文件和显示的编码是gb2312。这时候就可以利用程序的功能,对从数据库中检索到的数据进行转码,将utf8转为gb2312,这样就不用改了。文件本身的编码已更改,并且已显示编码。以php为例,mb_convert_encoding($string,"gb2312","utf8");
第四种,数据库中的乱码,是在数据录入时,数据本身与数据库的存储码不同造成的。例如:数据库的存储代码是utf8,当数据存储在数据库中时,添加一个mysql_query("set names utf8;");
三、乱码表现的情况
乱码的表现,我遇到过两个,
1)是字体中出现的乱码,变成了奇怪的字符
2) 只是一个空白页。检查源代码时,什么都没有。在这种情况下,有时,我认为它是由乱码引起的。页面右击,查看属性,修改代码就知道是不是乱码导致的空白页。
php网页抓取乱码(php网页抓取乱码原因解决办法:本文用大白话把)
网站优化 • 优采云 发表了文章 • 0 个评论 • 56 次浏览 • 2021-11-26 02:01
php网页抓取乱码原因解决办法:本文用大白话把php网页抓取怎么乱码解决方法简单说一下。php没有设置网页地址,只有编码,网页编码方式分为utf-8和gbk。虽然utf-8保证页面数据不变但乱码是在所难免的。1.实在解决不了的给你封个类库啊,比如wtftpbbrl之类,我用的是东秦开源的。2.抓取有了乱码,但是你可以去上百度对应的网页看看别人是怎么写的。一般别人是什么编码就怎么编码。eg:utf-8编码方式下抓取的例子:。然后你就明白乱码的原因了。
先搞清楚是什么问题,看看是否可以解决。另外,编码问题是gbk,非utf-8。通过strncpy("gbk",self,true)或者encode("gbk",self,gbk);encode("utf-8",self,gbk)。如果都没用,这个网站可能是bbs,就只能祈祷它能换上好的编码吧。
买个好点的路由器,设置好网络,防火墙,
买一个笔记本路由器,支持ssl或者https协议,对应web不同的响应,
php脚本乱码属于mime类型的byte字符串转换造成的问题,通常需要修改配置文件/etc/httpd/server/下,修改mime类型相关的地址处理为encodingencodeed,关闭url重定向(useragent), 查看全部
php网页抓取乱码(php网页抓取乱码原因解决办法:本文用大白话把)
php网页抓取乱码原因解决办法:本文用大白话把php网页抓取怎么乱码解决方法简单说一下。php没有设置网页地址,只有编码,网页编码方式分为utf-8和gbk。虽然utf-8保证页面数据不变但乱码是在所难免的。1.实在解决不了的给你封个类库啊,比如wtftpbbrl之类,我用的是东秦开源的。2.抓取有了乱码,但是你可以去上百度对应的网页看看别人是怎么写的。一般别人是什么编码就怎么编码。eg:utf-8编码方式下抓取的例子:。然后你就明白乱码的原因了。
先搞清楚是什么问题,看看是否可以解决。另外,编码问题是gbk,非utf-8。通过strncpy("gbk",self,true)或者encode("gbk",self,gbk);encode("utf-8",self,gbk)。如果都没用,这个网站可能是bbs,就只能祈祷它能换上好的编码吧。
买个好点的路由器,设置好网络,防火墙,
买一个笔记本路由器,支持ssl或者https协议,对应web不同的响应,
php脚本乱码属于mime类型的byte字符串转换造成的问题,通常需要修改配置文件/etc/httpd/server/下,修改mime类型相关的地址处理为encodingencodeed,关闭url重定向(useragent),
php网页抓取乱码(这里有新鲜出炉的PHP面向对象编程,程序狗速度看过来!)
网站优化 • 优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2021-11-23 11:14
这里是新的PHP面向对象编程,来看看程序狗的速度吧!
PHP 开源脚本语言 PHP(外文名:Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用的开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛低,易学,应用广泛。主要适用于Web开发领域。 PHP 的文件扩展名为 php。
本文章主要介绍PHP中使用file_get_contents抓取网页中文乱码问题的解决方法。可以通过使用curl配置gzip选项来解决。有一定的参考价值,有需要的朋友可以参考
本文介绍了PHP中使用file_get_contents抓取网页中文乱码问题的解决方案示例。分享给大家,供大家参考。具体方法如下:
file_get_contents 函数本来是一个很好的php内置的本地和远程文件操作函数。它可以让我们不费吹灰之力就可以直接下载远程数据,但是我在使用它来阅读网页时会遇到一些问题。页面出现乱码,这里总结一下具体的解决办法。
据网上的朋友说,可能是服务器开启了GZIP压缩的原因。下面是用firebug查看我的网站的header信息。 Gzip 已打开。请求头信息的原创头信息如下:
代码如下:
接受 text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
接受编码 gzip,放气
接受-语言zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
连接保持活动
Cookie __utma=225240837.787252530.1317310581.1335406161.1335411401.1537; __utmz=225240837.1326850415.887.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=%E4%BB%BB%E4% BD%95%E9%A1%B9%E7% 9B%AE%E9%83%BD%E4%B8%8D%E4%BC%9A%E9%82%A3%E4%B9%88%E7%AE% 80%E5%8D%95%20站点%3A; PHPSESSID=888mj4425p8s0m7s0frre3ovc7; __utmc=225240837; __utmb=225240837.1.10.1335411401
主持人
用户代理 Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
从头部信息可以看出Content-Encoding项是Gzip。
解决方法比较简单,就是用curl代替file_get_contents来获取,然后在curl配置参数中加一个。代码如下:
代码如下:
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
今天用file_get_contents抓图的时候,一开始没发现这个问题。
使用内置的 zlib 库。如果服务器已经安装了zlib库,可以通过如下代码轻松解决乱码问题,代码如下:
代码如下:
$data = file_get_contents("compress.zlib://".$url); 查看全部
php网页抓取乱码(这里有新鲜出炉的PHP面向对象编程,程序狗速度看过来!)
这里是新的PHP面向对象编程,来看看程序狗的速度吧!
PHP 开源脚本语言 PHP(外文名:Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用的开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛低,易学,应用广泛。主要适用于Web开发领域。 PHP 的文件扩展名为 php。
本文章主要介绍PHP中使用file_get_contents抓取网页中文乱码问题的解决方法。可以通过使用curl配置gzip选项来解决。有一定的参考价值,有需要的朋友可以参考
本文介绍了PHP中使用file_get_contents抓取网页中文乱码问题的解决方案示例。分享给大家,供大家参考。具体方法如下:
file_get_contents 函数本来是一个很好的php内置的本地和远程文件操作函数。它可以让我们不费吹灰之力就可以直接下载远程数据,但是我在使用它来阅读网页时会遇到一些问题。页面出现乱码,这里总结一下具体的解决办法。
据网上的朋友说,可能是服务器开启了GZIP压缩的原因。下面是用firebug查看我的网站的header信息。 Gzip 已打开。请求头信息的原创头信息如下:
代码如下:
接受 text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
接受编码 gzip,放气
接受-语言zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
连接保持活动
Cookie __utma=225240837.787252530.1317310581.1335406161.1335411401.1537; __utmz=225240837.1326850415.887.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=%E4%BB%BB%E4% BD%95%E9%A1%B9%E7% 9B%AE%E9%83%BD%E4%B8%8D%E4%BC%9A%E9%82%A3%E4%B9%88%E7%AE% 80%E5%8D%95%20站点%3A; PHPSESSID=888mj4425p8s0m7s0frre3ovc7; __utmc=225240837; __utmb=225240837.1.10.1335411401
主持人
用户代理 Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
从头部信息可以看出Content-Encoding项是Gzip。
解决方法比较简单,就是用curl代替file_get_contents来获取,然后在curl配置参数中加一个。代码如下:
代码如下:
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
今天用file_get_contents抓图的时候,一开始没发现这个问题。
使用内置的 zlib 库。如果服务器已经安装了zlib库,可以通过如下代码轻松解决乱码问题,代码如下:
代码如下:
$data = file_get_contents("compress.zlib://".$url);
php网页抓取乱码( PHP编程中需要注意编码的地方如数据库、页面、文件、JS等)
网站优化 • 优采云 发表了文章 • 0 个评论 • 53 次浏览 • 2021-11-23 00:05
PHP编程中需要注意编码的地方如数据库、页面、文件、JS等)
PHP统一页面编码避免乱码问题
更新时间:2015-04-09 08:57:58 投稿:俊杰
本文文章主要介绍PHP统一页面编码,避免乱码问题。本文讲解了PHP编程中需要注意编码的地方,如数据库、页面、文件、JS等,有需要的朋友可以参考以下
统一页面编码
MySQL 数据库编码、html 页面编码以及PHP 或html 文件本身的编码都必须保持一致。
1、MySQL 数据库编码:
创建数据库时指定代码(如gbk_chinese_ci)。创建数据表、创建字段、插入数据时不要指定代码。数据库代码将被自动继承。
连接数据库时,还有一个编码。连接数据库后,执行mysql_query('SET NAMES gbk');//用你的编码替换gbk,比如utf8。
2、html页面的编码参考这一行的设置:
复制代码代码如下:
3、PHP或html文件本身的编码:
用editplus打开php文件或html文件,保存为编码。如果数据库和页面编码是gbk,这里的编码是ansi;如果数据库和页面编码是utf-8,那么这里也选择utf-8。
4、Javascript或Flash中传入的数据是utf-8编码:
还要注意在Javascript或Flash中传输的数据是utf-8编码的。如果数据库和页面编码为gbk,则必须进行转码,然后写入数据库。
复制代码代码如下:
iconv('utf-8','gbk', $content);
5、在PHP程序中,可以添加一行来指定PHP源程序的编码:
复制代码代码如下:
header('Content-type: text/html; charset=gbk');
php页面编码
1.在文件头中设置编码
复制代码代码如下:
2.header和meta的区别
使用@header('Content-type: text/html; charset=gbk'); 区别
它们都告诉浏览器使用什么编码来显示网页。要说有什么不同,header是发送原创的HTTP头,网页中没有留下什么,meta是写在网页中的。
首先,如果网页中没有元数据,则发送 HTTP 标头将起作用。
其次,使用header()函数发送原创的HTTP头,可以收录更多的内容,设置编码只是其中之一。
第三,有时你不想在网页上显示任何内容,但你需要通知浏览器后续动作使用什么编码。 查看全部
php网页抓取乱码(
PHP编程中需要注意编码的地方如数据库、页面、文件、JS等)
PHP统一页面编码避免乱码问题
更新时间:2015-04-09 08:57:58 投稿:俊杰
本文文章主要介绍PHP统一页面编码,避免乱码问题。本文讲解了PHP编程中需要注意编码的地方,如数据库、页面、文件、JS等,有需要的朋友可以参考以下
统一页面编码
MySQL 数据库编码、html 页面编码以及PHP 或html 文件本身的编码都必须保持一致。
1、MySQL 数据库编码:
创建数据库时指定代码(如gbk_chinese_ci)。创建数据表、创建字段、插入数据时不要指定代码。数据库代码将被自动继承。
连接数据库时,还有一个编码。连接数据库后,执行mysql_query('SET NAMES gbk');//用你的编码替换gbk,比如utf8。
2、html页面的编码参考这一行的设置:
复制代码代码如下:
3、PHP或html文件本身的编码:
用editplus打开php文件或html文件,保存为编码。如果数据库和页面编码是gbk,这里的编码是ansi;如果数据库和页面编码是utf-8,那么这里也选择utf-8。
4、Javascript或Flash中传入的数据是utf-8编码:
还要注意在Javascript或Flash中传输的数据是utf-8编码的。如果数据库和页面编码为gbk,则必须进行转码,然后写入数据库。
复制代码代码如下:
iconv('utf-8','gbk', $content);
5、在PHP程序中,可以添加一行来指定PHP源程序的编码:
复制代码代码如下:
header('Content-type: text/html; charset=gbk');
php页面编码
1.在文件头中设置编码
复制代码代码如下:
2.header和meta的区别
使用@header('Content-type: text/html; charset=gbk'); 区别
它们都告诉浏览器使用什么编码来显示网页。要说有什么不同,header是发送原创的HTTP头,网页中没有留下什么,meta是写在网页中的。
首先,如果网页中没有元数据,则发送 HTTP 标头将起作用。
其次,使用header()函数发送原创的HTTP头,可以收录更多的内容,设置编码只是其中之一。
第三,有时你不想在网页上显示任何内容,但你需要通知浏览器后续动作使用什么编码。
php网页抓取乱码(一般来说,乱码的出现有2种原因,你知道吗?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2021-11-21 01:25
一般来说,出现乱码的原因有两个。一是设置了错误的编码(charset),导致浏览器解析错误的编码,导致满屏乱七八糟的《天书》,二是文件解析错误的编码打开,然后保存。例如,一个原本用GB2312编码的文本文件,用UTF-8编码打开并保存。解决上述乱码问题,首先需要知道开发中哪些环节涉及到编码:
1、文件编码:指页面文件(.html、.php等)本身保存的编码。Notepad和Dreamweaver在打开页面时会自动识别文件编码,所以不太可能出现问题。但是,ZendStudio 不会自动识别编码。它只会根据首选项的配置打开具有特定编码的文件。如果不注意工作,打开编码错误的文件,修改后保存,会出现乱码(我深有体会)。
2、 页面声明编码:在 HTML 代码 HEAD 中,可以用来告诉浏览器网页使用的编码。目前中文网站 XXX主要使用两种编码,GB2312和UTF-8。
3、数据库连接编码:指在进行数据库操作时,用于向数据库传输数据的编码。这里需要注意的是,不要与数据库本身的编码混淆。比如MySQL内部默认是latin1编码,即Mysql数据以latin1编码存储,其他编码传输到Mysql的数据会转换成latin1编码。
知道了WEB开发中涉及到编码的地方,也就知道出现乱码的原因了:以上三种编码设置不一致。由于大多数各种编码都兼容ASCII,所以不会出现英文符号,中文会倒霉。. 以下是一些常见的错误情况和解决方法:
1、 数据库使用UTF8编码,页面声明编码为GB2312,这是乱码最常见的原因。这时候在PHP脚本中直接SELECT数据是乱码,需要在查询前使用:
mysql_query("SETNAMESGBK"); 设置MYSQL连接码,保证页面声明码与这里设置的连接码一致(GBK是GB2312的扩展)。如果页面是 UTF-8 编码,您可以使用:
mysql_query("SETNAMESUTF8"); 注意是UTF8而不是一般的UTF-8。如果页面上声明的代码与数据库的内部代码一致,则可能没有设置连接代码。
注:其实MYSQL的数据输入输出比上面说的还要复杂。MYSQL配置文件my.ini中定义了两个默认代码,分别是[client]中的default-character-set和[mysqld]中的default。-character-set 分别设置客户端连接和内部数据库使用的默认编码。我们上面指定的编码实际上是MYSQL客户端连接服务器时的命令行参数character_set_client,告诉MYSQL服务器接收到的客户端数据是什么编码,而不是使用默认的编码。
2、 页面声明代码与文件本身不一致。这种情况很少发生,因为如果代码不一致,在创建页面时浏览器会看到乱码。更多的时候是发布后修改了一些小BUG,打开代码错误的页面然后保存造成的。或者使用一些FTP软件直接在线修改文件,比如CuteFTP,因为软件编码配置错误导致转换错误编码。
3、一些租虚拟主机的朋友,很明显上面三种编码设置正确或者出现乱码。比如网页是GB2312编码的,但是IE等浏览器打开时总是识别为UTF-8。网页的HEAD已经说明是GB2312了。手动修改浏览器编码为GB2312后,页面显示正常。原因是服务器Apache设置了服务器的全局默认编码,在httpd.conf中添加了AddDefaultCharsetUTF-8。这时候服务器会先把HTTP头发送给浏览器,它的优先级比页面中声明的代码要高,浏览器自然会误认。有两种解决方案,
2006.4.4 贴注:谢谢君臣告知:在HTML页面的HEAD区域,这句话一定要写在XXX之前,否则页面为空白(IE+PHP只要)。
以上是我对前段时间工作中遇到的问题的总结和体会。如有错误,请指正! 查看全部
php网页抓取乱码(一般来说,乱码的出现有2种原因,你知道吗?)
一般来说,出现乱码的原因有两个。一是设置了错误的编码(charset),导致浏览器解析错误的编码,导致满屏乱七八糟的《天书》,二是文件解析错误的编码打开,然后保存。例如,一个原本用GB2312编码的文本文件,用UTF-8编码打开并保存。解决上述乱码问题,首先需要知道开发中哪些环节涉及到编码:
1、文件编码:指页面文件(.html、.php等)本身保存的编码。Notepad和Dreamweaver在打开页面时会自动识别文件编码,所以不太可能出现问题。但是,ZendStudio 不会自动识别编码。它只会根据首选项的配置打开具有特定编码的文件。如果不注意工作,打开编码错误的文件,修改后保存,会出现乱码(我深有体会)。
2、 页面声明编码:在 HTML 代码 HEAD 中,可以用来告诉浏览器网页使用的编码。目前中文网站 XXX主要使用两种编码,GB2312和UTF-8。
3、数据库连接编码:指在进行数据库操作时,用于向数据库传输数据的编码。这里需要注意的是,不要与数据库本身的编码混淆。比如MySQL内部默认是latin1编码,即Mysql数据以latin1编码存储,其他编码传输到Mysql的数据会转换成latin1编码。
知道了WEB开发中涉及到编码的地方,也就知道出现乱码的原因了:以上三种编码设置不一致。由于大多数各种编码都兼容ASCII,所以不会出现英文符号,中文会倒霉。. 以下是一些常见的错误情况和解决方法:
1、 数据库使用UTF8编码,页面声明编码为GB2312,这是乱码最常见的原因。这时候在PHP脚本中直接SELECT数据是乱码,需要在查询前使用:
mysql_query("SETNAMESGBK"); 设置MYSQL连接码,保证页面声明码与这里设置的连接码一致(GBK是GB2312的扩展)。如果页面是 UTF-8 编码,您可以使用:
mysql_query("SETNAMESUTF8"); 注意是UTF8而不是一般的UTF-8。如果页面上声明的代码与数据库的内部代码一致,则可能没有设置连接代码。
注:其实MYSQL的数据输入输出比上面说的还要复杂。MYSQL配置文件my.ini中定义了两个默认代码,分别是[client]中的default-character-set和[mysqld]中的default。-character-set 分别设置客户端连接和内部数据库使用的默认编码。我们上面指定的编码实际上是MYSQL客户端连接服务器时的命令行参数character_set_client,告诉MYSQL服务器接收到的客户端数据是什么编码,而不是使用默认的编码。
2、 页面声明代码与文件本身不一致。这种情况很少发生,因为如果代码不一致,在创建页面时浏览器会看到乱码。更多的时候是发布后修改了一些小BUG,打开代码错误的页面然后保存造成的。或者使用一些FTP软件直接在线修改文件,比如CuteFTP,因为软件编码配置错误导致转换错误编码。
3、一些租虚拟主机的朋友,很明显上面三种编码设置正确或者出现乱码。比如网页是GB2312编码的,但是IE等浏览器打开时总是识别为UTF-8。网页的HEAD已经说明是GB2312了。手动修改浏览器编码为GB2312后,页面显示正常。原因是服务器Apache设置了服务器的全局默认编码,在httpd.conf中添加了AddDefaultCharsetUTF-8。这时候服务器会先把HTTP头发送给浏览器,它的优先级比页面中声明的代码要高,浏览器自然会误认。有两种解决方案,
2006.4.4 贴注:谢谢君臣告知:在HTML页面的HEAD区域,这句话一定要写在XXX之前,否则页面为空白(IE+PHP只要)。
以上是我对前段时间工作中遇到的问题的总结和体会。如有错误,请指正!
php网页抓取乱码(一个问题用file_get_contents抓取网页的解决方法)
网站优化 • 优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2021-11-21 01:25
今天我正在编写一个程序来抓取其他人的网页。以前,公司需要一些功能,但是今天我在抓取网页时发现了一个问题。我用file_get_contents抓取网页,发现了如截图所示的乱码情况。
所以使用转码
$contents = iconv("gb2312", "utf-8//IGNORE",$contents);
即使之前遇到过乱码,我也遇到过网页编码的问题。html标签不会有问题,问题还没解决。
所以我在网上找到了
原因:据说得到的头信息中有Content-Encoding:gzip,说明内容是GZIP压缩的
然后我尝试抓取我的博客,发现可以正常抓取,而且header信息中还收录Content-Encoding:gzip。不清楚为什么会出现这种情况,稍后我会解决。
下面我推荐2个解决方案:
①、服务器安装zlib库
$contents = file_get_contents("compress.zlib://".$url);
②. 使用 CURL 而不是 file_get_contents
function curl_get($url, $gzip=false){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
if($gzip) curl_setopt($curl, CURLOPT_ENCODING, "gzip"); // 关键在这里
$content = curl_exec($curl);
curl_close($curl);
return $content;
}
既然问题已经解决了,继续下面的过程
QQ交流群:136351212 查看全部
php网页抓取乱码(一个问题用file_get_contents抓取网页的解决方法)
今天我正在编写一个程序来抓取其他人的网页。以前,公司需要一些功能,但是今天我在抓取网页时发现了一个问题。我用file_get_contents抓取网页,发现了如截图所示的乱码情况。

所以使用转码
$contents = iconv("gb2312", "utf-8//IGNORE",$contents);
即使之前遇到过乱码,我也遇到过网页编码的问题。html标签不会有问题,问题还没解决。

所以我在网上找到了
原因:据说得到的头信息中有Content-Encoding:gzip,说明内容是GZIP压缩的
然后我尝试抓取我的博客,发现可以正常抓取,而且header信息中还收录Content-Encoding:gzip。不清楚为什么会出现这种情况,稍后我会解决。
下面我推荐2个解决方案:
①、服务器安装zlib库
$contents = file_get_contents("compress.zlib://".$url);
②. 使用 CURL 而不是 file_get_contents
function curl_get($url, $gzip=false){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
if($gzip) curl_setopt($curl, CURLOPT_ENCODING, "gzip"); // 关键在这里
$content = curl_exec($curl);
curl_close($curl);
return $content;
}
既然问题已经解决了,继续下面的过程
QQ交流群:136351212
php网页抓取乱码(一般来说,乱码的出现有2种原因,你知道吗?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2021-11-16 14:25
一般来说,出现乱码的原因有两个。一是设置了错误的编码(charset),导致浏览器用错误的编码解析,导致满屏乱七八糟的《天书》,二是文件错误编码为打开,然后保存。例如,一个原本用GB2312编码的文本文件,用UTF-8编码打开并保存。解决上述乱码问题,首先需要知道开发中哪些环节涉及到编码:
1、文件编码:指页面文件(.html、.php等)本身保存的编码。Notepad和Dreamweaver在打开页面时会自动识别文件编码,所以不太可能出现问题。但是,ZendStudio 不会自动识别编码。它只会根据首选项的配置打开具有特定编码的文件。如果工作中不注意,打开编码错误的文件,修改后保存,会出现乱码(我深有体会)。
2、 页面声明编码:在 HTML 代码 HEAD 中,可以用来告诉浏览器网页使用的编码。目前,在中文网站的开发中,XXX主要使用两种编码:GB2312和UTF-8。
3、数据库连接编码:指在进行数据库操作时,用于向数据库传输数据的编码。这里需要注意的是,不要与数据库本身的编码混淆。比如MySQL内部默认是latin1编码,即Mysql数据以latin1编码存储,其他编码传输到Mysql的数据会转换成latin1编码。
知道了WEB开发中涉及到编码的地方,也就知道出现乱码的原因了:以上三种编码设置不一致。由于大多数各种编码都兼容ASCII,所以不会出现英文符号,中文会倒霉。. 以下是一些常见的错误情况和解决方法:
1、 数据库使用UTF8编码,页面声明编码为GB2312,这是乱码最常见的原因。这时候直接在PHP脚本中Select数据是乱码,需要在查询前使用:
mysql_query("SETNAMESGBK");
设置MYSQL连接码,确保页面声明码与这里设置的连接码一致(GBK是GB2312的扩展)。如果页面是 UTF-8 编码,您可以使用:
mysql_query("SETNAMESUTF8");
注意是UTF8而不是一般的UTF-8。如果页面上声明的代码与数据库的内部代码一致,则可能没有设置连接代码。
注:其实MYSQL的数据输入输出比上面说的还要复杂。MYSQL配置文件my.ini中定义了两个默认代码,分别是[client]中的default-character-set和[mysqld]中的default。-character-set 分别设置客户端连接和内部数据库使用的默认编码。我们上面指定的编码实际上是MYSQL客户端连接服务器时的命令行参数character_set_client,告诉MYSQL服务器接收到的客户端数据是什么编码,而不是使用默认的编码。
2、 页面声明代码与文件本身不一致。这种情况很少发生,因为如果代码不一致,在创建页面时浏览器会看到乱码。更多的时候是发布后修改了一些小BUG,打开代码错误的页面然后保存造成的。或者使用一些FTP软件直接在线修改文件,比如CuteFTP,因为软件编码配置错误导致转换错误编码。
3、一些租虚拟主机的朋友,很明显上面三种编码设置正确或者出现乱码。比如网页是GB2312编码的,但是IE等浏览器打开时总是识别为UTF-8。网页的HEAD已经说明是GB2312了。手动修改浏览器编码为GB2312后,页面显示正常。原因是服务器Apache设置了服务器的全局默认编码,在httpd.conf中添加了AddDefaultCharsetUTF-8。这时候服务器会先把HTTP头发送给浏览器,它的优先级比页面中声明的代码要高,浏览器自然会误认。有两种解决方案。
以上就是PHP和MySQL开发中页面乱码的产生及解决的详细内容。更多详情请关注其他相关html中文网站文章! 查看全部
php网页抓取乱码(一般来说,乱码的出现有2种原因,你知道吗?)
一般来说,出现乱码的原因有两个。一是设置了错误的编码(charset),导致浏览器用错误的编码解析,导致满屏乱七八糟的《天书》,二是文件错误编码为打开,然后保存。例如,一个原本用GB2312编码的文本文件,用UTF-8编码打开并保存。解决上述乱码问题,首先需要知道开发中哪些环节涉及到编码:
1、文件编码:指页面文件(.html、.php等)本身保存的编码。Notepad和Dreamweaver在打开页面时会自动识别文件编码,所以不太可能出现问题。但是,ZendStudio 不会自动识别编码。它只会根据首选项的配置打开具有特定编码的文件。如果工作中不注意,打开编码错误的文件,修改后保存,会出现乱码(我深有体会)。
2、 页面声明编码:在 HTML 代码 HEAD 中,可以用来告诉浏览器网页使用的编码。目前,在中文网站的开发中,XXX主要使用两种编码:GB2312和UTF-8。
3、数据库连接编码:指在进行数据库操作时,用于向数据库传输数据的编码。这里需要注意的是,不要与数据库本身的编码混淆。比如MySQL内部默认是latin1编码,即Mysql数据以latin1编码存储,其他编码传输到Mysql的数据会转换成latin1编码。
知道了WEB开发中涉及到编码的地方,也就知道出现乱码的原因了:以上三种编码设置不一致。由于大多数各种编码都兼容ASCII,所以不会出现英文符号,中文会倒霉。. 以下是一些常见的错误情况和解决方法:
1、 数据库使用UTF8编码,页面声明编码为GB2312,这是乱码最常见的原因。这时候直接在PHP脚本中Select数据是乱码,需要在查询前使用:
mysql_query("SETNAMESGBK");
设置MYSQL连接码,确保页面声明码与这里设置的连接码一致(GBK是GB2312的扩展)。如果页面是 UTF-8 编码,您可以使用:
mysql_query("SETNAMESUTF8");
注意是UTF8而不是一般的UTF-8。如果页面上声明的代码与数据库的内部代码一致,则可能没有设置连接代码。
注:其实MYSQL的数据输入输出比上面说的还要复杂。MYSQL配置文件my.ini中定义了两个默认代码,分别是[client]中的default-character-set和[mysqld]中的default。-character-set 分别设置客户端连接和内部数据库使用的默认编码。我们上面指定的编码实际上是MYSQL客户端连接服务器时的命令行参数character_set_client,告诉MYSQL服务器接收到的客户端数据是什么编码,而不是使用默认的编码。
2、 页面声明代码与文件本身不一致。这种情况很少发生,因为如果代码不一致,在创建页面时浏览器会看到乱码。更多的时候是发布后修改了一些小BUG,打开代码错误的页面然后保存造成的。或者使用一些FTP软件直接在线修改文件,比如CuteFTP,因为软件编码配置错误导致转换错误编码。
3、一些租虚拟主机的朋友,很明显上面三种编码设置正确或者出现乱码。比如网页是GB2312编码的,但是IE等浏览器打开时总是识别为UTF-8。网页的HEAD已经说明是GB2312了。手动修改浏览器编码为GB2312后,页面显示正常。原因是服务器Apache设置了服务器的全局默认编码,在httpd.conf中添加了AddDefaultCharsetUTF-8。这时候服务器会先把HTTP头发送给浏览器,它的优先级比页面中声明的代码要高,浏览器自然会误认。有两种解决方案。
以上就是PHP和MySQL开发中页面乱码的产生及解决的详细内容。更多详情请关注其他相关html中文网站文章!
php网页抓取乱码( PHP环境下utf8乱码的解决方法--apachephp配置问题)
网站优化 • 优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2021-11-15 23:22
PHP环境下utf8乱码的解决方法--apachephp配置问题)
【讲座】PHP环境下utf8乱码的解决方法PHP环境下utf8乱码的解决方法php环境下utf8乱码的解决方法---apachephp配置题乘法口算100题七年级有理数混合运算100题电脑一级题库二进制一次性方程应用题真心话大冒险在PHP程序中添加ini_setdefault_charsetutf-8将收录unicode代码的文件统一转换成官方文档格式IOU标准格式个人IOU标准格式个人IOU笔记格式需要这里要注意editplus保存的是utf8文件,没有BOM头。大多数情况下不会有问题,模板输出会出现乱码。除了检查模板文件中的utf8标记外,使用editplus保存模板时没有BOM头。原因是在模板解析过程中,PHP 在读取文件时不会检查 BOM 头。它会把文件当成ansi格式,这样最终输出到浏览器的HTML就变成乱码了。另一段文章我的页面代码如下[Copytoclipboard][-]CODEDOCTYPEhtmlPUBLIC"-W3CDTDXHTML10TransitionalEN""htmlxmlns"htmlheadmetahttp-equiv"Content-Type"content"texthtmlcharsetutf-8"titletitlelinkrel"stylesheet"type"textcss" hrefscriptcsscss"scripttype"textjavascript"srcscriptmenujs"scriptglbodyclass"left"rcimagediv"div" 44288475324946852 系统会提示您警告您要做什么?先把BOM去掉再添加[Copytoclipboard][-]CODEheaderContent-TypetexthtmlcharsetUTF-8 httpdconfAddDefaultCharsetGB2312PHPINIdefault_charset"gb2312"----------------- ---------- ----------------------------------------- ---------- ----------------------------------------- ---------- ------------------------------------ 如果你在线 大部分页面都是通过搜索apache配置找到的会建议你在httpdconf中加入这样一句话。AddDefaultCharsetGB2312对于只使用GB2312编码的新手开发者来说是可以的,但是如果你想使用UTF-8字符集,比如testphp文件需要有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8“这个代码”这时候你打开浏览器访问testphp页面,你看到了正确的页面,但是如果浏览器实际上以 GB2312 编码解释了服务器的返回 为什么是响应?原因是浏览器根据HTTP响应报文头中的Content-typetexthtmlcharse,ie自动选择utf8后,不会出现乱码。我不想使用 BOM,因为会话会提示您警告您使用 BOM 后要做什么。先把BOM去掉然后把[Copytoclipboard][-]CODEheaderContent-TypetexthtmlcharsetUTF-8添加到httpdconfAddDefaultCharsetGB2312PHPINIdefault_charset"gb2312"--------------------------- --------------------- ----------------------------- --------------------- ----------------------------- --------------------- ----------------如果在网上搜索apache的配置,找到的大部分页面都会建议你在httpdconf中添加这样一句话AddDefaultCharsetGB2312。对于只使用GB2312编码的新手和开发者,这样做是可以的,但是如果你想使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候就可以打开浏览器访问testphp页面了。是正确的页面,但是如果浏览器真的用GB2312编码解释了服务器返回的响应,原因是浏览器是根据http响应消息头部的Content-typetexthtmlcharse ie自动选择utf8后,会出现无乱码。我不想使用 BOM,因为会话会提示您警告您使用 BOM 后要做什么。先去掉BOM,然后在httpdconfAddDefaultCharsetGB2312PHPINIdefault_charset"gb2312"---------------------------添加[Copytoclipboard][-]CODEheaderContent-TypetexthtmlcharsetUTF-8 --------------------- ----------------------------- --------------------- ----------------------------- --------------------- ----------------如果在网上搜索apache配置,大部分找到的页面会提示你在httpdconf中添加这样一句AddDefaultCharsetGB2312。对于只使用GB2312编码的新手和开发者,这样做是可以的,但是如果你想使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候就可以打开浏览器访问testphp页面了。是正确的页面,但是如果浏览器真的用GB2312编码解释了服务器返回的响应,原因是浏览器是基于http响应消息头部的Content-typetexthtmlcharse ------------- ------------------------------------- ------------- ------------------------------------- ------------- ------------------------------------- ------------- - 如果你在网上搜索apache的配置,找到的大部分页面都会建议你在httpdconf中添加这样一句话AddDefaultCharsetGB2312。对于只使用GB2312编码的新手开发者来说这个可以,但是如果你要使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候打开浏览器访问testphp页面,看到的是正确的页面,但是如果浏览器实际上使用GB2312编码来解释服务器返回的响应,原因是浏览器是基于http响应消息头中的Content-typetexthtmlcharse.----------- ------------------------------- ----------- ------------------------------- ----------- ------------------------------- ----------- --- 如果你在网上搜索apache的配置,找到的页面大部分都会提示你在httpdconf中添加AddDefaultCharsetGB2312这样的一句话。对于只使用GB2312编码的新手开发者来说这个可以,但是如果你要使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候打开浏览器访问testphp页面,看到的是正确的页面,
tGB2312来决定使用哪种编码来解释响应,也就是说apache服务器仍然使用GB2312编码来传输数据。所以如果apache的默认字符集设置为GB2312,即使页面中声明了UTF-8编码,apache服务器仍然会遵循GB2312编码。发送httpresponse就可以了。让我们将 AddDefaultCharsetGB2312 更改为 AddDefaultCharsetUTF-8 以查看结果。如果看到乱码,恭喜你,你也知道是乱码问题了。如果你看到一个空白页,那你就惨了。你可能认为这是其他一些原因。是造成的,不会从编码的角度考虑如何解决问题。这就是为什么 php 文件本身是用系统字符集编码的原因。中文windowsXP使用GB2312。每个文件头都有一个字段,表明该文件已被使用。当 apache 收到浏览器的请求时,它会让 php 解释请求的页面。比如testphpphp会识别testphp的编码方式是GB2312,就像我们用javac编译java源文件一样,编译器默认使用系统。编码读取源文件的内容。如果源文件没有用系统编码保存,可以使用命令javac-encoding指定具体编码以GB2312的编码格式将数据传给apache,apache服务器不会改变从php传过来的数据. 在响应消息的标题中将字符集设置为 UTF-8。党员维权考察表和毫米对照表条目数教师职称等级表员工考核得分表普通年金现值系数代表一个人,而普通GB2312或BIG5由于上述原因输出时为两页原因。有半个汉字。这时候,一半的汉字会组合成一个乱码,IE完全无法读取。如果你发现整个叶子表面实际上已经输出了,如果你使用MozillaMozillaFirefoxSarafi浏览器,这不会导致这个问题,而是一堆乱码。这是由于 Firefox 和 IE 解析网页编码的策略不同造成的。OK,我们把testphp设为UT,保存F-8然后用浏览器访问就没有问题了,但这将使 apache 目录中的所有 Web 应用程序仅使用相同的编码。在http响应消息的header中会设置Charset,但是只会设置Content-typetexthtml,浏览器会依赖html文件中设置的harness来确定编码。其次,脚本phpini文件中的default_charsetUTF-8和httpdconf文件的作用是一样的。注释掉这一行,让php自动识别文件的编码方式。不管你用什么编码方式,只要testphp中的metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8和你的testphp文件编码一致就不会出现乱码问题。用户提交的数据的编码。浏览器提交的字符编码由客户端的characherencoding决定,例如,当前浏览器的编码是 Gb2312。用户提交数据后,无论apache设置的编码是GB2312还是UTF-8,服务器端收到的数据仍然是Gb2312编码的数据。如果要在返回页面显示用户刚刚提交的数据,页面采用UTF-8编码,或者用户提交的数据存储在数据库中,数据库采用UTF-8编码,那么需要字符转换"tmlcharsetUTF-8"和你的testphp文件的编码是一样的,所以不会出现乱码的问题。用户提交的数据的编码。浏览器提交的字符编码由客户端的字符编码决定。比如当前浏览器的编码是Gb2312,无论用户提交数据后apache设置的编码如何。方法是 GB2312 或 UTF-8。这时候服务器端接收到的数据还是Gb2312编码的。如果要在返回页面显示用户刚刚提交的数据,并且页面是UTF-8编码的或者存储在数据库中的 用户提交的数据和数据库都是UTF-8编码的,那么就需要进行字符转换“tmlcharsetUTF-8”和你的testphp文件的编码是一样的,所以不会出现乱码的问题。用户提交的数据的编码。浏览器提交的字符编码由客户端的字符编码决定。比如当前浏览器的编码是Gb2312,与用户提交数据后apache设置的编码无关。方法是 GB2312 或 UTF-8。这时候服务器端接收到的数据还是Gb2312编码的。如果要在返回页面显示用户刚刚提交的数据,并且页面是UTF-8编码的或者存储在数据库中的 用户提交的数据和数据库都是UTF-8编码的,那么就需要进行字符转换 查看全部
php网页抓取乱码(
PHP环境下utf8乱码的解决方法--apachephp配置问题)

【讲座】PHP环境下utf8乱码的解决方法PHP环境下utf8乱码的解决方法php环境下utf8乱码的解决方法---apachephp配置题乘法口算100题七年级有理数混合运算100题电脑一级题库二进制一次性方程应用题真心话大冒险在PHP程序中添加ini_setdefault_charsetutf-8将收录unicode代码的文件统一转换成官方文档格式IOU标准格式个人IOU标准格式个人IOU笔记格式需要这里要注意editplus保存的是utf8文件,没有BOM头。大多数情况下不会有问题,模板输出会出现乱码。除了检查模板文件中的utf8标记外,使用editplus保存模板时没有BOM头。原因是在模板解析过程中,PHP 在读取文件时不会检查 BOM 头。它会把文件当成ansi格式,这样最终输出到浏览器的HTML就变成乱码了。另一段文章我的页面代码如下[Copytoclipboard][-]CODEDOCTYPEhtmlPUBLIC"-W3CDTDXHTML10TransitionalEN""htmlxmlns"htmlheadmetahttp-equiv"Content-Type"content"texthtmlcharsetutf-8"titletitlelinkrel"stylesheet"type"textcss" hrefscriptcsscss"scripttype"textjavascript"srcscriptmenujs"scriptglbodyclass"left"rcimagediv"div" 44288475324946852 系统会提示您警告您要做什么?先把BOM去掉再添加[Copytoclipboard][-]CODEheaderContent-TypetexthtmlcharsetUTF-8 httpdconfAddDefaultCharsetGB2312PHPINIdefault_charset"gb2312"----------------- ---------- ----------------------------------------- ---------- ----------------------------------------- ---------- ------------------------------------ 如果你在线 大部分页面都是通过搜索apache配置找到的会建议你在httpdconf中加入这样一句话。AddDefaultCharsetGB2312对于只使用GB2312编码的新手开发者来说是可以的,但是如果你想使用UTF-8字符集,比如testphp文件需要有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8“这个代码”这时候你打开浏览器访问testphp页面,你看到了正确的页面,但是如果浏览器实际上以 GB2312 编码解释了服务器的返回 为什么是响应?原因是浏览器根据HTTP响应报文头中的Content-typetexthtmlcharse,ie自动选择utf8后,不会出现乱码。我不想使用 BOM,因为会话会提示您警告您使用 BOM 后要做什么。先把BOM去掉然后把[Copytoclipboard][-]CODEheaderContent-TypetexthtmlcharsetUTF-8添加到httpdconfAddDefaultCharsetGB2312PHPINIdefault_charset"gb2312"--------------------------- --------------------- ----------------------------- --------------------- ----------------------------- --------------------- ----------------如果在网上搜索apache的配置,找到的大部分页面都会建议你在httpdconf中添加这样一句话AddDefaultCharsetGB2312。对于只使用GB2312编码的新手和开发者,这样做是可以的,但是如果你想使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候就可以打开浏览器访问testphp页面了。是正确的页面,但是如果浏览器真的用GB2312编码解释了服务器返回的响应,原因是浏览器是根据http响应消息头部的Content-typetexthtmlcharse ie自动选择utf8后,会出现无乱码。我不想使用 BOM,因为会话会提示您警告您使用 BOM 后要做什么。先去掉BOM,然后在httpdconfAddDefaultCharsetGB2312PHPINIdefault_charset"gb2312"---------------------------添加[Copytoclipboard][-]CODEheaderContent-TypetexthtmlcharsetUTF-8 --------------------- ----------------------------- --------------------- ----------------------------- --------------------- ----------------如果在网上搜索apache配置,大部分找到的页面会提示你在httpdconf中添加这样一句AddDefaultCharsetGB2312。对于只使用GB2312编码的新手和开发者,这样做是可以的,但是如果你想使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候就可以打开浏览器访问testphp页面了。是正确的页面,但是如果浏览器真的用GB2312编码解释了服务器返回的响应,原因是浏览器是基于http响应消息头部的Content-typetexthtmlcharse ------------- ------------------------------------- ------------- ------------------------------------- ------------- ------------------------------------- ------------- - 如果你在网上搜索apache的配置,找到的大部分页面都会建议你在httpdconf中添加这样一句话AddDefaultCharsetGB2312。对于只使用GB2312编码的新手开发者来说这个可以,但是如果你要使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候打开浏览器访问testphp页面,看到的是正确的页面,但是如果浏览器实际上使用GB2312编码来解释服务器返回的响应,原因是浏览器是基于http响应消息头中的Content-typetexthtmlcharse.----------- ------------------------------- ----------- ------------------------------- ----------- ------------------------------- ----------- --- 如果你在网上搜索apache的配置,找到的页面大部分都会提示你在httpdconf中添加AddDefaultCharsetGB2312这样的一句话。对于只使用GB2312编码的新手开发者来说这个可以,但是如果你要使用UTF-8字符集,比如你需要在testphp文件中有metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8。这时候打开浏览器访问testphp页面,看到的是正确的页面,

tGB2312来决定使用哪种编码来解释响应,也就是说apache服务器仍然使用GB2312编码来传输数据。所以如果apache的默认字符集设置为GB2312,即使页面中声明了UTF-8编码,apache服务器仍然会遵循GB2312编码。发送httpresponse就可以了。让我们将 AddDefaultCharsetGB2312 更改为 AddDefaultCharsetUTF-8 以查看结果。如果看到乱码,恭喜你,你也知道是乱码问题了。如果你看到一个空白页,那你就惨了。你可能认为这是其他一些原因。是造成的,不会从编码的角度考虑如何解决问题。这就是为什么 php 文件本身是用系统字符集编码的原因。中文windowsXP使用GB2312。每个文件头都有一个字段,表明该文件已被使用。当 apache 收到浏览器的请求时,它会让 php 解释请求的页面。比如testphpphp会识别testphp的编码方式是GB2312,就像我们用javac编译java源文件一样,编译器默认使用系统。编码读取源文件的内容。如果源文件没有用系统编码保存,可以使用命令javac-encoding指定具体编码以GB2312的编码格式将数据传给apache,apache服务器不会改变从php传过来的数据. 在响应消息的标题中将字符集设置为 UTF-8。党员维权考察表和毫米对照表条目数教师职称等级表员工考核得分表普通年金现值系数代表一个人,而普通GB2312或BIG5由于上述原因输出时为两页原因。有半个汉字。这时候,一半的汉字会组合成一个乱码,IE完全无法读取。如果你发现整个叶子表面实际上已经输出了,如果你使用MozillaMozillaFirefoxSarafi浏览器,这不会导致这个问题,而是一堆乱码。这是由于 Firefox 和 IE 解析网页编码的策略不同造成的。OK,我们把testphp设为UT,保存F-8然后用浏览器访问就没有问题了,但这将使 apache 目录中的所有 Web 应用程序仅使用相同的编码。在http响应消息的header中会设置Charset,但是只会设置Content-typetexthtml,浏览器会依赖html文件中设置的harness来确定编码。其次,脚本phpini文件中的default_charsetUTF-8和httpdconf文件的作用是一样的。注释掉这一行,让php自动识别文件的编码方式。不管你用什么编码方式,只要testphp中的metahttp-equivContent-TypecontenttexthtmlcharsetUTF-8和你的testphp文件编码一致就不会出现乱码问题。用户提交的数据的编码。浏览器提交的字符编码由客户端的characherencoding决定,例如,当前浏览器的编码是 Gb2312。用户提交数据后,无论apache设置的编码是GB2312还是UTF-8,服务器端收到的数据仍然是Gb2312编码的数据。如果要在返回页面显示用户刚刚提交的数据,页面采用UTF-8编码,或者用户提交的数据存储在数据库中,数据库采用UTF-8编码,那么需要字符转换"tmlcharsetUTF-8"和你的testphp文件的编码是一样的,所以不会出现乱码的问题。用户提交的数据的编码。浏览器提交的字符编码由客户端的字符编码决定。比如当前浏览器的编码是Gb2312,无论用户提交数据后apache设置的编码如何。方法是 GB2312 或 UTF-8。这时候服务器端接收到的数据还是Gb2312编码的。如果要在返回页面显示用户刚刚提交的数据,并且页面是UTF-8编码的或者存储在数据库中的 用户提交的数据和数据库都是UTF-8编码的,那么就需要进行字符转换“tmlcharsetUTF-8”和你的testphp文件的编码是一样的,所以不会出现乱码的问题。用户提交的数据的编码。浏览器提交的字符编码由客户端的字符编码决定。比如当前浏览器的编码是Gb2312,与用户提交数据后apache设置的编码无关。方法是 GB2312 或 UTF-8。这时候服务器端接收到的数据还是Gb2312编码的。如果要在返回页面显示用户刚刚提交的数据,并且页面是UTF-8编码的或者存储在数据库中的 用户提交的数据和数据库都是UTF-8编码的,那么就需要进行字符转换
php网页抓取乱码(PHP与数据库的编码应一致1.修改.8编码)
网站优化 • 优采云 发表了文章 • 0 个评论 • 76 次浏览 • 2021-11-14 08:04
一。首先是PHP网页的编码
1. php文件本身的编码和网页的编码要匹配
一种。如果要使用gb2312编码,那么php应该输出header:header("Content-Type: text/html; charset=gb2312"),添加静态页面,所有文件的编码格式都是ANSI,可以用记事本并另存为 选择编码为 ANSI 并覆盖源文件。
湾 如果要使用utf-8编码,php要输出header:header("Content-Type: text/html; charset=utf-8"),添加静态页面,所有文件的编码格式为utf-8。保存为 utf-8 可能有点麻烦。一般在utf-8文件的开头都会有一个BOM。如果你使用 session,你可以用 editplus 保存它。在editplus中,进入Tools->Preferences->File->UTF-8 Sign,选择始终删除,然后保存删除BOM信息。
2. PHP本身不是Unicode,所有substr等函数都必须改成mb_substr(需要安装mbstring扩展);或使用 iconv 进行转码。
二。PHP与Mysql的数据交互
PHP和数据库的编码要一致
1. 修改mysql配置文件my.ini或f。mysql最好使用utf8编码
[mysql]
默认字符集=utf8
[mysqld]
默认字符集=utf8
默认存储引擎=MyISAM
在[mysqld]下添加:
默认排序规则=utf8_bin
init_connect='SET NAMES utf8'
2. 添加mysql_query("set names'encoding'"); 在需要做数据库操作的php程序之前,编码与php编码相同,如果php编码为gb2312,则mysql编码为gb2312,如果是utf-8则mysql编码为utf8,所以会有插入或检索数据时无乱码
三。PHP与操作系统有关
Windows 和 Linux 的编码是不同的。在windows环境下,调用php函数时如果参数是utf-8编码,就会出现错误,比如move_uploaded_file()、filesize()、readfile()等,这些函数都是处理上传的,下载的时候经常用到,调用时可能会出现以下错误:
警告:move_uploaded_file()[function.move-uploaded-file]:无法打开流:无效参数...
警告:move_uploaded_file()[function.move-uploaded-file]:无法在...中移动''到''
警告:filesize() [function.filesize]: stat failed for ... in ...
警告:readfile() [function.readfile]:无法打开流:.. 中的参数无效。
虽然在Linux环境下gb2312编码不会出现这些错误,但是保存的文件名出现乱码,无法读取文件。这时可以将参数转换为操作系统识别的编码。编码转换可以是mb_convert_encoding(string, New code, original code)或者iconv(original code, new code, string),这样处理后保存的文件名就不会出现乱码,可以正常读取文件,实现上传下载中文名称文件。
其实还有更好的方案,完全脱离系统,不需要考虑系统的编码。可以生成一个只有字母和数字的序列作为文件名,并将原来的中文名保存在数据库中,这样调用move_uploaded_file()就没有问题了。下载时只需要把文件名改成原来的中文名即可。实现下载的代码如下
header("Pragma: public");
header("过期:0");
header("Cache-Component: must-revalidate, post-check=0, pre-check=0");
header("内容类型:$file_type");
header("内容长度:$file_size");
header("内容处理:附件;文件名=\"$file_name\"");
header("内容传输编码:二进制");
读取文件($file_path);
$file_type 为文件类型,$file_name 为原创名称,$file_path 为保存在服务上的文件地址。
四。总结一下为什么会乱码
一般来说,出现乱码的原因有两个。一是设置了错误的编码(charset),导致浏览器解析错误的编码,导致满屏乱七八糟的《天书》,二是文件解析错误的编码打开,然后保存。例如,一个原本用GB2312编码的文本文件,用UTF-8编码打开并保存。要解决上面的乱码问题,首先需要知道开发的哪些方面涉及到编码:
1、文件编码:指页面文件(.html、.php等)本身保存的编码。记事本和Dreamweaver在打开页面时会自动识别文件编码,所以不太可能出现问题。但是,ZendStudio 不会自动识别编码。它只会根据首选项的配置打开具有特定编码的文件。如果工作中不注意,打开编码错误的文件,修改后保存,出现乱码(我深有体会)。
2、 页面声明编码:在 HTML 代码 HEAD 中,可以用来告诉浏览器网页使用什么编码。目前中文网站 XXX主要使用两种编码,GB2312和UTF-8。
3、数据库连接编码:是指在执行数据库操作时,用于向数据库传输数据的编码。这里需要注意的是,不要与数据库本身的编码混淆。比如MySQL内部默认是latin1编码,即Mysql的数据以latin1编码存储,其他编码传输到Mysql的数据会转换成latin1编码。
知道了WEB开发中涉及到编码的地方,也就知道出现乱码的原因了:以上三种编码设置不一致。由于大多数各种编码都兼容ASCII,所以不会出现英文符号,中文会倒霉。.
五。决战的一些常见错误情况及解决办法:
1、 数据库使用UTF8编码,页面声明编码为GB2312,这是乱码最常见的原因。这时候直接在PHP脚本中SELECT数据就乱码了。查询前需要使用:mysql_query("SET NAMES GBK"); 设置MYSQL连接码,保证页面声明码与这里设置的连接码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码,可以使用:mysql_query("SET NAMES UTF8");
请注意,它是 UTF8 而不是一般的 UTF-8。如果页面上声明的代码与数据库的内部代码一致,则可能没有设置连接代码。
注:其实MYSQL的数据输入输出比上面说的还要复杂。MYSQL配置文件my.ini中定义了两个默认代码,分别是[client]中的默认-character-set和[mysqld]中的默认。-character-set 设置客户端连接和内部数据库中使用的默认编码。我们上面指定的编码其实就是MYSQL客户端连接服务器时的命令行参数character_set_client,告诉MYSQL服务器接收到的客户端数据是什么编码,而不是使用默认的编码。
2、 页面声明代码与文件本身不一致。这种情况很少发生,因为如果代码不一致,在创建页面时浏览器会看到乱码。更多的时候是发布后修改了一些小BUG,打开代码错误的页面然后保存造成的。或者使用一些FTP软件直接在线修改文件,比如CuteFTP,因为软件编码配置错误导致转换错误编码。
3、一些租虚拟主机的朋友,很明显上面三种编码设置正确或者出现乱码。比如网页是GB2312编码的,但是IE等浏览器打开时总是识别为UTF-8。网页的HEAD已经说明是GB2312了。手动修改浏览器编码为GB2312后,页面显示正常。原因是服务器Apache设置了服务器全局默认编码,在httpd.conf中添加了AddDefaultCharset UTF-8。这时候服务器会先把HTTP头发送给浏览器,它的优先级比页面中声明的代码要高,浏览器自然会误认。有两种解决方案, 查看全部
php网页抓取乱码(PHP与数据库的编码应一致1.修改.8编码)
一。首先是PHP网页的编码
1. php文件本身的编码和网页的编码要匹配
一种。如果要使用gb2312编码,那么php应该输出header:header("Content-Type: text/html; charset=gb2312"),添加静态页面,所有文件的编码格式都是ANSI,可以用记事本并另存为 选择编码为 ANSI 并覆盖源文件。
湾 如果要使用utf-8编码,php要输出header:header("Content-Type: text/html; charset=utf-8"),添加静态页面,所有文件的编码格式为utf-8。保存为 utf-8 可能有点麻烦。一般在utf-8文件的开头都会有一个BOM。如果你使用 session,你可以用 editplus 保存它。在editplus中,进入Tools->Preferences->File->UTF-8 Sign,选择始终删除,然后保存删除BOM信息。
2. PHP本身不是Unicode,所有substr等函数都必须改成mb_substr(需要安装mbstring扩展);或使用 iconv 进行转码。
二。PHP与Mysql的数据交互
PHP和数据库的编码要一致
1. 修改mysql配置文件my.ini或f。mysql最好使用utf8编码
[mysql]
默认字符集=utf8
[mysqld]
默认字符集=utf8
默认存储引擎=MyISAM
在[mysqld]下添加:
默认排序规则=utf8_bin
init_connect='SET NAMES utf8'
2. 添加mysql_query("set names'encoding'"); 在需要做数据库操作的php程序之前,编码与php编码相同,如果php编码为gb2312,则mysql编码为gb2312,如果是utf-8则mysql编码为utf8,所以会有插入或检索数据时无乱码
三。PHP与操作系统有关
Windows 和 Linux 的编码是不同的。在windows环境下,调用php函数时如果参数是utf-8编码,就会出现错误,比如move_uploaded_file()、filesize()、readfile()等,这些函数都是处理上传的,下载的时候经常用到,调用时可能会出现以下错误:
警告:move_uploaded_file()[function.move-uploaded-file]:无法打开流:无效参数...
警告:move_uploaded_file()[function.move-uploaded-file]:无法在...中移动''到''
警告:filesize() [function.filesize]: stat failed for ... in ...
警告:readfile() [function.readfile]:无法打开流:.. 中的参数无效。
虽然在Linux环境下gb2312编码不会出现这些错误,但是保存的文件名出现乱码,无法读取文件。这时可以将参数转换为操作系统识别的编码。编码转换可以是mb_convert_encoding(string, New code, original code)或者iconv(original code, new code, string),这样处理后保存的文件名就不会出现乱码,可以正常读取文件,实现上传下载中文名称文件。
其实还有更好的方案,完全脱离系统,不需要考虑系统的编码。可以生成一个只有字母和数字的序列作为文件名,并将原来的中文名保存在数据库中,这样调用move_uploaded_file()就没有问题了。下载时只需要把文件名改成原来的中文名即可。实现下载的代码如下
header("Pragma: public");
header("过期:0");
header("Cache-Component: must-revalidate, post-check=0, pre-check=0");
header("内容类型:$file_type");
header("内容长度:$file_size");
header("内容处理:附件;文件名=\"$file_name\"");
header("内容传输编码:二进制");
读取文件($file_path);
$file_type 为文件类型,$file_name 为原创名称,$file_path 为保存在服务上的文件地址。
四。总结一下为什么会乱码
一般来说,出现乱码的原因有两个。一是设置了错误的编码(charset),导致浏览器解析错误的编码,导致满屏乱七八糟的《天书》,二是文件解析错误的编码打开,然后保存。例如,一个原本用GB2312编码的文本文件,用UTF-8编码打开并保存。要解决上面的乱码问题,首先需要知道开发的哪些方面涉及到编码:
1、文件编码:指页面文件(.html、.php等)本身保存的编码。记事本和Dreamweaver在打开页面时会自动识别文件编码,所以不太可能出现问题。但是,ZendStudio 不会自动识别编码。它只会根据首选项的配置打开具有特定编码的文件。如果工作中不注意,打开编码错误的文件,修改后保存,出现乱码(我深有体会)。
2、 页面声明编码:在 HTML 代码 HEAD 中,可以用来告诉浏览器网页使用什么编码。目前中文网站 XXX主要使用两种编码,GB2312和UTF-8。
3、数据库连接编码:是指在执行数据库操作时,用于向数据库传输数据的编码。这里需要注意的是,不要与数据库本身的编码混淆。比如MySQL内部默认是latin1编码,即Mysql的数据以latin1编码存储,其他编码传输到Mysql的数据会转换成latin1编码。
知道了WEB开发中涉及到编码的地方,也就知道出现乱码的原因了:以上三种编码设置不一致。由于大多数各种编码都兼容ASCII,所以不会出现英文符号,中文会倒霉。.
五。决战的一些常见错误情况及解决办法:
1、 数据库使用UTF8编码,页面声明编码为GB2312,这是乱码最常见的原因。这时候直接在PHP脚本中SELECT数据就乱码了。查询前需要使用:mysql_query("SET NAMES GBK"); 设置MYSQL连接码,保证页面声明码与这里设置的连接码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码,可以使用:mysql_query("SET NAMES UTF8");
请注意,它是 UTF8 而不是一般的 UTF-8。如果页面上声明的代码与数据库的内部代码一致,则可能没有设置连接代码。
注:其实MYSQL的数据输入输出比上面说的还要复杂。MYSQL配置文件my.ini中定义了两个默认代码,分别是[client]中的默认-character-set和[mysqld]中的默认。-character-set 设置客户端连接和内部数据库中使用的默认编码。我们上面指定的编码其实就是MYSQL客户端连接服务器时的命令行参数character_set_client,告诉MYSQL服务器接收到的客户端数据是什么编码,而不是使用默认的编码。
2、 页面声明代码与文件本身不一致。这种情况很少发生,因为如果代码不一致,在创建页面时浏览器会看到乱码。更多的时候是发布后修改了一些小BUG,打开代码错误的页面然后保存造成的。或者使用一些FTP软件直接在线修改文件,比如CuteFTP,因为软件编码配置错误导致转换错误编码。
3、一些租虚拟主机的朋友,很明显上面三种编码设置正确或者出现乱码。比如网页是GB2312编码的,但是IE等浏览器打开时总是识别为UTF-8。网页的HEAD已经说明是GB2312了。手动修改浏览器编码为GB2312后,页面显示正常。原因是服务器Apache设置了服务器全局默认编码,在httpd.conf中添加了AddDefaultCharset UTF-8。这时候服务器会先把HTTP头发送给浏览器,它的优先级比页面中声明的代码要高,浏览器自然会误认。有两种解决方案,
php网页抓取乱码(php网页抓取乱码问题,我一般处理思路如下;)
网站优化 • 优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2021-11-13 14:03
php网页抓取乱码问题,我一般处理思路如下;1.先定位主体post数据包,上传方式的话可以通过schema字段判断;如果是md5之类可以进行除法分解2.打开数据包,读取源码,先看,不过千万不要为了调试这一步3.如果出错了,那就对post数据包做正则引擎匹配,看哪里不一样,一般是主体post的包过大,那么将主体包拆开,来看具体哪里不一样。4.最重要的是,你可以在网站后台监控结果,发现post数据包中的这些字段:。
1).data的alert方法需要request_user方法
2).multi_for_post方法
3).extract_in_params方法(当字段传入后,会将字段post方法的pattern重新编码)5.那么相应处理方法,比如匹配相同主体post数据包后,网站就会自动重新再生成一个新post数据包,如果发现文件太大,可以通过关闭服务器,或者其他手段解决,加上额外的防火墙或者其他。6.如果网站编码解码没有问题,问题就是发出去的数据包,不是同一种协议(也就是说,一般同一种协议的字符比较少)7.可以通过反向解析,通过检查网页是否被篡改过的方式解决,反正规模小的站,网页本身也不大。
这个问题不大,用代理就可以了。你说的一个页面一个post就是说明这个post数据相当于来自于一个局域网的post服务器,方法有:1.暴力破解2.通过跳转获取外部数据3.利用gzip压缩图片4.强加片段, 查看全部
php网页抓取乱码(php网页抓取乱码问题,我一般处理思路如下;)
php网页抓取乱码问题,我一般处理思路如下;1.先定位主体post数据包,上传方式的话可以通过schema字段判断;如果是md5之类可以进行除法分解2.打开数据包,读取源码,先看,不过千万不要为了调试这一步3.如果出错了,那就对post数据包做正则引擎匹配,看哪里不一样,一般是主体post的包过大,那么将主体包拆开,来看具体哪里不一样。4.最重要的是,你可以在网站后台监控结果,发现post数据包中的这些字段:。
1).data的alert方法需要request_user方法
2).multi_for_post方法
3).extract_in_params方法(当字段传入后,会将字段post方法的pattern重新编码)5.那么相应处理方法,比如匹配相同主体post数据包后,网站就会自动重新再生成一个新post数据包,如果发现文件太大,可以通过关闭服务器,或者其他手段解决,加上额外的防火墙或者其他。6.如果网站编码解码没有问题,问题就是发出去的数据包,不是同一种协议(也就是说,一般同一种协议的字符比较少)7.可以通过反向解析,通过检查网页是否被篡改过的方式解决,反正规模小的站,网页本身也不大。
这个问题不大,用代理就可以了。你说的一个页面一个post就是说明这个post数据相当于来自于一个局域网的post服务器,方法有:1.暴力破解2.通过跳转获取外部数据3.利用gzip压缩图片4.强加片段,
php网页抓取乱码(阿里云HTML网页源码乱码推荐活动:更多优惠gt)
网站优化 • 优采云 发表了文章 • 0 个评论 • 182 次浏览 • 2021-11-13 06:05
阿里云>云栖社区>主题图>H>获取网站源码乱码
推荐活动:
更多优惠>
当前话题:获取网站源码乱码加采集
相关话题:
获取网站源码乱码相关博客查看更多博客
彩虹二赞7.8源码破解版(去域名授权) 彩虹云任务系统无任何限制
作者:操张林2156人浏览评论:05年前
彩虹二赞7.7云任务系统全站源码,这里完全免费分享。功能还是很不错的。惊喜你最喜欢的朋友!以下文字为源码包中的介绍。具体功能和条件请自行下载测试:1.新界面,响应式布局,后台更多界面风格选项。2.使用ajax重写列表页面
阅读全文
C#HttpHelper爬虫类源码分享--苏飞版
作者:苏飞 2071人浏览评论:02年前
简介 C#HttpHelper实现了爬取C#HttpWebRequest时忽略代码、忽略证书、忽略cookie、实现代理的功能。有了它,您可以发出 Get 和 Post 请求,还可以轻松设置 cookie、证书、代理和编码。你不关心问题,因为类会自动为你识别页面
阅读全文
[IT]HTML网页源码的Charset解读
作者:sjf01151187 浏览评论人数:06年前
当你打开某个网站,也就是某个url地址,通过浏览器可以正常看到网页内容,各种文字都可以正常显示,不会出现乱码。这个过程涉及到浏览器帮你正确解析HTML源代码,这涉及到HTML网页源代码的字符编码处理。字符编码处理的一般逻辑是:
阅读全文
核心页面编码导致的中文乱码
作者:Jack Chen 1162人浏览评论:03年前
原文:core页面编码导致的中文乱码问题描述。最近用core写了一个简单的网站,在windows系统下完全没有问题。后来linux系统内置docker,linux自动使用git获取源码,编译部署一个
阅读全文
你不知道页面编码,浏览器选择编码,get,post和各种乱码的来源
作者:Jack Chen 1123人浏览评论:07年前
原文:你不知道的页面编码,浏览器选择编码,get,post各种乱码的origin页面编码和浏览器选择编码每个朋友都知道,在visual studio新版本中,无需任何设置,创建时默认编码新页面是 utf-8。我们可以从两个地方选择
阅读全文
CTF---密码学概论题号,这里没有key
作者:angel_kitty822 浏览评论人数:04年前
这里没有关键分数:10 来源:西浦学院 难度:容易 参加人数:5577 获得旗帜:1965 回答数:2074 通过率:95% 如果你没有它,没有,我为什么要听给你解决问题的链接::8080/
阅读全文
使用HttpWebRequest和HtmlAgilityPack抓取网页(拒绝乱码,拒绝正则表达式)
作者:Jack Chen 819人浏览评论:07年前
原文:使用HttpWebRequest和HtmlAgilityPack抓取网页(拒绝乱码,拒绝正则表达式)。废话不多说,只说需求。公司的网站要抢其他网站的文章,可是任务没来找我,同事一下午都没搞出来。因为刚到公司,我想证明自己,所以就接受了这份工作。
阅读全文
获取JS动态内容
作者:小科技专家682人浏览评论:04年前
我们之前抓取的网页大多是 HTML 静态生成的内容。您可以直接从 HTML 源代码中找到您看到的数据和内容。然而,并不是所有的网页都是这样。网站的部分内容是前端JS动态生成的。由于网页呈现的内容是由JS生成的,我们可以在浏览器上看到,但是在HTML源代码中是找不到的。
阅读全文
获取网站源码乱码相关问答
【Java学习全家桶】1460道Java热点题,百位阿里巴巴技术专家答疑解惑
作者:管理贝贝19522人浏览评论:153年前
阿里极客公益活动:也许你选择为一个问题夜战,也许你迷茫只是寻求答案,也许你只是因为一个未知而绞尽脑汁,那么他们来了,阿里巴巴技术专家来云栖为您解答技术问题。他们使用自己手中的技术来帮助用户成长。本次活动邀请数百位阿里巴巴技术
阅读全文 查看全部
php网页抓取乱码(阿里云HTML网页源码乱码推荐活动:更多优惠gt)
阿里云>云栖社区>主题图>H>获取网站源码乱码

推荐活动:
更多优惠>
当前话题:获取网站源码乱码加采集
相关话题:
获取网站源码乱码相关博客查看更多博客
彩虹二赞7.8源码破解版(去域名授权) 彩虹云任务系统无任何限制


作者:操张林2156人浏览评论:05年前
彩虹二赞7.7云任务系统全站源码,这里完全免费分享。功能还是很不错的。惊喜你最喜欢的朋友!以下文字为源码包中的介绍。具体功能和条件请自行下载测试:1.新界面,响应式布局,后台更多界面风格选项。2.使用ajax重写列表页面
阅读全文
C#HttpHelper爬虫类源码分享--苏飞版


作者:苏飞 2071人浏览评论:02年前
简介 C#HttpHelper实现了爬取C#HttpWebRequest时忽略代码、忽略证书、忽略cookie、实现代理的功能。有了它,您可以发出 Get 和 Post 请求,还可以轻松设置 cookie、证书、代理和编码。你不关心问题,因为类会自动为你识别页面
阅读全文
[IT]HTML网页源码的Charset解读

作者:sjf01151187 浏览评论人数:06年前
当你打开某个网站,也就是某个url地址,通过浏览器可以正常看到网页内容,各种文字都可以正常显示,不会出现乱码。这个过程涉及到浏览器帮你正确解析HTML源代码,这涉及到HTML网页源代码的字符编码处理。字符编码处理的一般逻辑是:
阅读全文
核心页面编码导致的中文乱码


作者:Jack Chen 1162人浏览评论:03年前
原文:core页面编码导致的中文乱码问题描述。最近用core写了一个简单的网站,在windows系统下完全没有问题。后来linux系统内置docker,linux自动使用git获取源码,编译部署一个
阅读全文
你不知道页面编码,浏览器选择编码,get,post和各种乱码的来源


作者:Jack Chen 1123人浏览评论:07年前
原文:你不知道的页面编码,浏览器选择编码,get,post各种乱码的origin页面编码和浏览器选择编码每个朋友都知道,在visual studio新版本中,无需任何设置,创建时默认编码新页面是 utf-8。我们可以从两个地方选择
阅读全文
CTF---密码学概论题号,这里没有key


作者:angel_kitty822 浏览评论人数:04年前
这里没有关键分数:10 来源:西浦学院 难度:容易 参加人数:5577 获得旗帜:1965 回答数:2074 通过率:95% 如果你没有它,没有,我为什么要听给你解决问题的链接::8080/
阅读全文
使用HttpWebRequest和HtmlAgilityPack抓取网页(拒绝乱码,拒绝正则表达式)


作者:Jack Chen 819人浏览评论:07年前
原文:使用HttpWebRequest和HtmlAgilityPack抓取网页(拒绝乱码,拒绝正则表达式)。废话不多说,只说需求。公司的网站要抢其他网站的文章,可是任务没来找我,同事一下午都没搞出来。因为刚到公司,我想证明自己,所以就接受了这份工作。
阅读全文
获取JS动态内容


作者:小科技专家682人浏览评论:04年前
我们之前抓取的网页大多是 HTML 静态生成的内容。您可以直接从 HTML 源代码中找到您看到的数据和内容。然而,并不是所有的网页都是这样。网站的部分内容是前端JS动态生成的。由于网页呈现的内容是由JS生成的,我们可以在浏览器上看到,但是在HTML源代码中是找不到的。
阅读全文
获取网站源码乱码相关问答
【Java学习全家桶】1460道Java热点题,百位阿里巴巴技术专家答疑解惑

作者:管理贝贝19522人浏览评论:153年前
阿里极客公益活动:也许你选择为一个问题夜战,也许你迷茫只是寻求答案,也许你只是因为一个未知而绞尽脑汁,那么他们来了,阿里巴巴技术专家来云栖为您解答技术问题。他们使用自己手中的技术来帮助用户成长。本次活动邀请数百位阿里巴巴技术
阅读全文
php网页抓取乱码(php网页抓取乱码可以用urllib2来解决,python爬虫乱码)
网站优化 • 优采云 发表了文章 • 0 个评论 • 50 次浏览 • 2021-11-11 14:03
php网页抓取乱码,可以用urllib2来解决,python爬虫乱码,可以用requests库,这两个都是标准的http库。有两个问题需要明确一下,一个是php的urllib2库一般只能获取静态网页,如果实在要获取动态的html文件(网页源码),有一个parser模块可以提供动态获取url的一些方法。
另一个是非智能化网页,例如api,这种网页往往比较多,很多api会提供域名为本站,并且提供了正则表达式、exp、securehttpserver等服务,这个时候使用httpclient(一般和http模块一起使用)是一个不错的选择。而requests模块和urllib2差不多,可以解决大部分的网页,如果需要使用动态网页的爬虫,比如xmlhttprequest模块可以使用更智能化的封装,那就需要自己封装一些http请求库(如requests库)。参考:。
1、phpurllib2网页抓取解决乱码问题-allgeneric的博客-csdn博客
2、php解决http加载乱码问题-allgeneric的博客-csdn博客
3、phpaccept包装http网页乱码问题-allgeneric的博客-csdn博客php网页加载乱码解决-allgeneric的博客-csdn博客(我建议抓取网页使用标准的http库)
1、网页对于人,怎么加载有规律,有规定。
2、网页对于机器,怎么连接,怎么加载,没有特定的规则。
3、所有这些实现并不等于就应该怎么返回。 查看全部
php网页抓取乱码(php网页抓取乱码可以用urllib2来解决,python爬虫乱码)
php网页抓取乱码,可以用urllib2来解决,python爬虫乱码,可以用requests库,这两个都是标准的http库。有两个问题需要明确一下,一个是php的urllib2库一般只能获取静态网页,如果实在要获取动态的html文件(网页源码),有一个parser模块可以提供动态获取url的一些方法。
另一个是非智能化网页,例如api,这种网页往往比较多,很多api会提供域名为本站,并且提供了正则表达式、exp、securehttpserver等服务,这个时候使用httpclient(一般和http模块一起使用)是一个不错的选择。而requests模块和urllib2差不多,可以解决大部分的网页,如果需要使用动态网页的爬虫,比如xmlhttprequest模块可以使用更智能化的封装,那就需要自己封装一些http请求库(如requests库)。参考:。
1、phpurllib2网页抓取解决乱码问题-allgeneric的博客-csdn博客
2、php解决http加载乱码问题-allgeneric的博客-csdn博客
3、phpaccept包装http网页乱码问题-allgeneric的博客-csdn博客php网页加载乱码解决-allgeneric的博客-csdn博客(我建议抓取网页使用标准的http库)
1、网页对于人,怎么加载有规律,有规定。
2、网页对于机器,怎么连接,怎么加载,没有特定的规则。
3、所有这些实现并不等于就应该怎么返回。
php网页抓取乱码(使用iconv-lite解决request乱码问题.js抓取非utf-8 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 50 次浏览 • 2021-11-10 01:10
)
使用 iconv-lite 解决请求乱码问题
Node.js 在抓取非 utf-8 中文网页时会遇到乱码。比如网易的首页代码是gb2312,爬取就会出现乱码。
var request = require('request')
var url = 'http://www.163.com'
request(url, function (err, res, body) {
console.log(body)
})
可以使用 iconv-lite 来解决
安装
npm install iconv-lite
同时我们会修改user-agent来防止网站阻塞:
var originRequest = require('request')
var iconv = require('iconv-lite')
var headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
}
function request (url, callback) {
var options = {
url: url,
encoding: null,
headers: headers
}
originRequest(options, callback)
}
request(url, function (err, res, body) {
var html = iconv.decode(body, 'gb2312')
console.log(html)
})
解决乱码问题
使用cheerio解析HTML
cheerio 可以简单粗暴的理解为一个服务端的jQuery选择器,有了它,它比普通的更直观
安装
npm install cheerio
request(url, function (err, res, body) {
var html = iconv.decode(body, 'gb2312')
var $ = cheerio.load(html)
console.log($('h1').text())
console.log($('h1').html())
})
输出如下
网易
网易
那么问题来了,$('h1').html()输出的代码是Unicode编码的,网易变成了网易,给我们的字符处理带来了一些麻烦
解决cheerio .html()“乱码”的问题
查看一下,可以关闭转换实体代码的功能
var $ = cheerio.load(html)
改为
var $ = cheerio.load(html, {decodeEntities: false})
好的,完整代码如下:
var originRequest = require('request')
var cheerio = require('cheerio')
var iconv = require('iconv-lite')
var headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
}
function request (url, callback) {
var options = {
url: url,
encoding: null,
headers: headers
}
originRequest(options, callback)
}
var url = 'http://www.163.com'
request(url, function (err, res, body) {
var html = iconv.decode(body, 'gb2312')
var $ = cheerio.load(html, {decodeEntities: false})
console.log($('h1').text())
console.log($('h1').html())
}) 查看全部
php网页抓取乱码(使用iconv-lite解决request乱码问题.js抓取非utf-8
)
使用 iconv-lite 解决请求乱码问题
Node.js 在抓取非 utf-8 中文网页时会遇到乱码。比如网易的首页代码是gb2312,爬取就会出现乱码。
var request = require('request')
var url = 'http://www.163.com'
request(url, function (err, res, body) {
console.log(body)
})
可以使用 iconv-lite 来解决
安装
npm install iconv-lite
同时我们会修改user-agent来防止网站阻塞:
var originRequest = require('request')
var iconv = require('iconv-lite')
var headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
}
function request (url, callback) {
var options = {
url: url,
encoding: null,
headers: headers
}
originRequest(options, callback)
}
request(url, function (err, res, body) {
var html = iconv.decode(body, 'gb2312')
console.log(html)
})
解决乱码问题
使用cheerio解析HTML
cheerio 可以简单粗暴的理解为一个服务端的jQuery选择器,有了它,它比普通的更直观
安装
npm install cheerio
request(url, function (err, res, body) {
var html = iconv.decode(body, 'gb2312')
var $ = cheerio.load(html)
console.log($('h1').text())
console.log($('h1').html())
})
输出如下
网易
网易
那么问题来了,$('h1').html()输出的代码是Unicode编码的,网易变成了网易,给我们的字符处理带来了一些麻烦
解决cheerio .html()“乱码”的问题
查看一下,可以关闭转换实体代码的功能
var $ = cheerio.load(html)
改为
var $ = cheerio.load(html, {decodeEntities: false})
好的,完整代码如下:
var originRequest = require('request')
var cheerio = require('cheerio')
var iconv = require('iconv-lite')
var headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
}
function request (url, callback) {
var options = {
url: url,
encoding: null,
headers: headers
}
originRequest(options, callback)
}
var url = 'http://www.163.com'
request(url, function (err, res, body) {
var html = iconv.decode(body, 'gb2312')
var $ = cheerio.load(html, {decodeEntities: false})
console.log($('h1').text())
console.log($('h1').html())
})
php网页抓取乱码(什么是这是的编码?的方式解决乱码问题? )
网站优化 • 优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2021-11-09 01:01
)
2、 如果上面的方法不行,页面还是乱码;或者在head标签下找不到charset属性;或者我们要采集很多网页,而这些网页的编码方式都不一样,我们不可能在一个网页上一一查看head标签,所以可以采用以下方法用来解决乱码。
(1)python 的 chardet 库
可以使用以下方法解决乱码问题
result = chardet.detect(response.content)
print(result)
data = response.content.decode(chardet.detect(response.content)['encoding'])
{'confidence': 0.99, 'language': '', 'encoding': 'utf-8'}
从输出结果可以看出,这是一个“猜测”代码。猜测的方法是先采集各种代码的特征字符。根据特征人物的判断,“猜对”的概率很高。
这种方法的效率非常低。如果采集的网页很大,你只能猜测其中一部分的源代码,即
result = chardet.detect(response.content[:1000])
(2)响应编码
也可以使用另一种方法,response自身的编码和apparent_encoding这两个变量。
Response.encoding 一般来自 response.headers 中 content-type 字段的 charset 值。其他情况我不太了解。
response.apparent_encoding 一般使用上面提到的python chardet 库。
所以可以使用下面的方式来解决乱码问题
data = response.content.decode(response.apparent_encoding)
3、 一般来说,以上两种方法都可以解决乱码问题。但如果以上两种方法都不能解决,则可能是网页压缩造成的。使用以下方法解决此问题。
检查你写的头信息是否收录Accept-Encoding字段。如果是,请删除此字段。乱码问题将得到解决。
headers = {
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/49.0.2623.221
Safari/537.36 SE 2.X MetaSr 1.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Connection': 'keep-alive',
} 查看全部
php网页抓取乱码(什么是这是的编码?的方式解决乱码问题?
)
2、 如果上面的方法不行,页面还是乱码;或者在head标签下找不到charset属性;或者我们要采集很多网页,而这些网页的编码方式都不一样,我们不可能在一个网页上一一查看head标签,所以可以采用以下方法用来解决乱码。
(1)python 的 chardet 库
可以使用以下方法解决乱码问题
result = chardet.detect(response.content)
print(result)
data = response.content.decode(chardet.detect(response.content)['encoding'])
{'confidence': 0.99, 'language': '', 'encoding': 'utf-8'}
从输出结果可以看出,这是一个“猜测”代码。猜测的方法是先采集各种代码的特征字符。根据特征人物的判断,“猜对”的概率很高。
这种方法的效率非常低。如果采集的网页很大,你只能猜测其中一部分的源代码,即
result = chardet.detect(response.content[:1000])
(2)响应编码
也可以使用另一种方法,response自身的编码和apparent_encoding这两个变量。
Response.encoding 一般来自 response.headers 中 content-type 字段的 charset 值。其他情况我不太了解。
response.apparent_encoding 一般使用上面提到的python chardet 库。
所以可以使用下面的方式来解决乱码问题
data = response.content.decode(response.apparent_encoding)
3、 一般来说,以上两种方法都可以解决乱码问题。但如果以上两种方法都不能解决,则可能是网页压缩造成的。使用以下方法解决此问题。
检查你写的头信息是否收录Accept-Encoding字段。如果是,请删除此字段。乱码问题将得到解决。
headers = {
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/49.0.2623.221
Safari/537.36 SE 2.X MetaSr 1.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Connection': 'keep-alive',
}
php网页抓取乱码(将数据插入到php(BF%%CA%FD))
网站优化 • 优采云 发表了文章 • 0 个评论 • 58 次浏览 • 2021-11-08 17:03
php?name=%CA%FD%BE%DD%BF%E2插入数据时"onclick="tagshow(event)"class="t_tag">数据库会显示乱码,从php?name读取=% CA%FD%BE%DD%BF%E2"onclick="tagshow(event)"class="t_tag">从数据库读取的数据在网页上显示为乱码的问题其实是要做的php?name=% CA%FD%BE%DD%BF%E2"onclick="tagshow(event)"class="t_tag">数据库编码,网页编码和表格编码相同)!GBK2312同下
(1)设置数据库编码,为了符合国际标准,一般设置为utf-8
(2)数据表设置也设为utf-8
(3)设置你的网页编码为utf-8,打开Dreamweaver,(修改)--(页面属性)
(4)添加标题("Content-Type:text/html;charset=utf-8");
(5)mysql_query('setnamesutf8'); 操作应该在对数据进行操作之前进行,然后对数据进行查询、更新、插入等操作 查看全部
php网页抓取乱码(将数据插入到php(BF%%CA%FD))
php?name=%CA%FD%BE%DD%BF%E2插入数据时"onclick="tagshow(event)"class="t_tag">数据库会显示乱码,从php?name读取=% CA%FD%BE%DD%BF%E2"onclick="tagshow(event)"class="t_tag">从数据库读取的数据在网页上显示为乱码的问题其实是要做的php?name=% CA%FD%BE%DD%BF%E2"onclick="tagshow(event)"class="t_tag">数据库编码,网页编码和表格编码相同)!GBK2312同下
(1)设置数据库编码,为了符合国际标准,一般设置为utf-8
(2)数据表设置也设为utf-8
(3)设置你的网页编码为utf-8,打开Dreamweaver,(修改)--(页面属性)
(4)添加标题("Content-Type:text/html;charset=utf-8");
(5)mysql_query('setnamesutf8'); 操作应该在对数据进行操作之前进行,然后对数据进行查询、更新、插入等操作
php网页抓取乱码(如何判断网页的编码和网页代码中的字符编码? )
网站优化 • 优采云 发表了文章 • 0 个评论 • 65 次浏览 • 2021-11-07 06:07
)
在使用python 2抓取网页时,经常会遇到抓取到的内容显示乱码。
出现这种情况最有可能是编码问题:运行环境的字符编码与网页的字符编码不一致。
例如,我在 windows 控制台 (gbk) 中抓取了一个 utf-8 编码的 网站。或者,在Mac/Linux终端抓一个gbk编码的网站(utf-8)。因为大多数网站使用的是utf-8编码,而且很多人用的是Windows,所有这种情况相当普遍。
如果你发现你抓取的内容在英文、数字、符号上看起来都是正确的,但是中间出现了一些乱码,你基本可以断定是这样的。
解决这个问题的办法是先按照网页的编码方式将结果解码成unicode,然后输出。如果不确定网页的编码,可以参考以下代码:
import urllib
req = urllib.urlopen("http://some.web.site")
info = req.info()
charset = info.getparam('charset')
content = req.read()
print content.decode(charset, 'ignore')
复制代码
'ignore' 参数的作用是忽略无法解码的字符。
然而,这种方法并不总是有效。另一种方式是通过正则化直接匹配网页代码中的编码设置:
复制代码
除了编码问题导致的乱码外,还有一种情况经常被忽略,那就是登陆页面开启了gzip压缩。压缩后的网页传输的数据更少,打开速度更快。在浏览器中打开时,浏览器会根据网页的header信息自动解压。但是直接用代码去抢就不行了。所以,很可能会疑惑,为什么打开网页地址明了,但是程序爬取却不行。就连我自己也被这个问题愚弄了。
这种情况的表现就是抓取的内容几乎都是乱码,甚至无法显示。
判断网页是否开启压缩并解压,可以参考如下代码:
import urllib
import gzip
from StringIO import StringIO
req = urllib.urlopen("http://some.web.site")
info = req.info()
encoding = info.getheader('Content-Encoding')
content = req.read()
if encoding == 'gzip':
buf = StringIO(content)
gf = gzip.GzipFile(fileobj=buf)
content = gf.read()
print content
复制代码
在我们课堂上查看天气系列的编程实例(点击查看),这两个问题困扰了不少人。这里有一个特别的解释。
最后,还有另一种“武器”要介绍。如果你第一次使用它,你甚至不知道上面两个问题仍然存在。
这是请求模块。
以同样的方式抓取网页,您只需要:
import requests
print requests.get("http://some.web.site").text
复制代码
没有编码问题,没有压缩问题。
这就是我喜欢 Python 的原因。
至于如何安装requests模块,请参考前面的文章:
Python-Crossin的编程课堂如何安装第三方模块-知乎专栏
pip install requests
复制代码
其他 文章 和回答:
查看全部
php网页抓取乱码(如何判断网页的编码和网页代码中的字符编码?
)
在使用python 2抓取网页时,经常会遇到抓取到的内容显示乱码。
出现这种情况最有可能是编码问题:运行环境的字符编码与网页的字符编码不一致。
例如,我在 windows 控制台 (gbk) 中抓取了一个 utf-8 编码的 网站。或者,在Mac/Linux终端抓一个gbk编码的网站(utf-8)。因为大多数网站使用的是utf-8编码,而且很多人用的是Windows,所有这种情况相当普遍。
如果你发现你抓取的内容在英文、数字、符号上看起来都是正确的,但是中间出现了一些乱码,你基本可以断定是这样的。
解决这个问题的办法是先按照网页的编码方式将结果解码成unicode,然后输出。如果不确定网页的编码,可以参考以下代码:
import urllib
req = urllib.urlopen("http://some.web.site")
info = req.info()
charset = info.getparam('charset')
content = req.read()
print content.decode(charset, 'ignore')
复制代码
'ignore' 参数的作用是忽略无法解码的字符。
然而,这种方法并不总是有效。另一种方式是通过正则化直接匹配网页代码中的编码设置:
复制代码
除了编码问题导致的乱码外,还有一种情况经常被忽略,那就是登陆页面开启了gzip压缩。压缩后的网页传输的数据更少,打开速度更快。在浏览器中打开时,浏览器会根据网页的header信息自动解压。但是直接用代码去抢就不行了。所以,很可能会疑惑,为什么打开网页地址明了,但是程序爬取却不行。就连我自己也被这个问题愚弄了。
这种情况的表现就是抓取的内容几乎都是乱码,甚至无法显示。
判断网页是否开启压缩并解压,可以参考如下代码:
import urllib
import gzip
from StringIO import StringIO
req = urllib.urlopen("http://some.web.site")
info = req.info()
encoding = info.getheader('Content-Encoding')
content = req.read()
if encoding == 'gzip':
buf = StringIO(content)
gf = gzip.GzipFile(fileobj=buf)
content = gf.read()
print content
复制代码
在我们课堂上查看天气系列的编程实例(点击查看),这两个问题困扰了不少人。这里有一个特别的解释。
最后,还有另一种“武器”要介绍。如果你第一次使用它,你甚至不知道上面两个问题仍然存在。
这是请求模块。
以同样的方式抓取网页,您只需要:
import requests
print requests.get("http://some.web.site").text
复制代码
没有编码问题,没有压缩问题。
这就是我喜欢 Python 的原因。
至于如何安装requests模块,请参考前面的文章:
Python-Crossin的编程课堂如何安装第三方模块-知乎专栏
pip install requests
复制代码
其他 文章 和回答:
php网页抓取乱码(php程序员如何在php中支持fastjson解决呢?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 54 次浏览 • 2021-11-06 00:03
php网页抓取乱码是php程序程序员常遇到的问题之一,通常来说php程序员可以使用fastjson解决,但如果涉及到抓取一些公开数据库数据的话,用fastjson来解决仍然是一个不错的选择。那么究竟如何在php中支持fastjson呢?这里我们使用的是php源码编译安装,方法很简单,先下载php源码并编译成php源码,然后,执行php+./configure,这样就可以安装了。
参考上面的方法,我们编译成了./configure。这样在执行php+./configure的时候,php会自动执行我们的./configure./configure,避免了有些时候处于fastjson版本问题而需要去抓取公开的数据库数据。
if-equiv="sign":locale="en_us.utf-8"else:locale="en_us.utf-8"
楼上说的都不错,补充一个,php-pcre包括了ctype和ole的数据格式。
configure。
fastjson有两种形式,标准数据格式和xml格式;标准数据格式是php开发语言和fastjson数据库都支持的;但是xml格式需要下载require库,对于php语言来说还是不太友好,可以再配置文件中加入xmlhttprequest,就可以直接使用require的xmlgetformdata来实现网页的数据请求了。
php-pcre。打开终端,cd到你需要编译的文件夹,把require的xmlize.php文件拷贝到你的xml目录中, 查看全部
php网页抓取乱码(php程序员如何在php中支持fastjson解决呢?)
php网页抓取乱码是php程序程序员常遇到的问题之一,通常来说php程序员可以使用fastjson解决,但如果涉及到抓取一些公开数据库数据的话,用fastjson来解决仍然是一个不错的选择。那么究竟如何在php中支持fastjson呢?这里我们使用的是php源码编译安装,方法很简单,先下载php源码并编译成php源码,然后,执行php+./configure,这样就可以安装了。
参考上面的方法,我们编译成了./configure。这样在执行php+./configure的时候,php会自动执行我们的./configure./configure,避免了有些时候处于fastjson版本问题而需要去抓取公开的数据库数据。
if-equiv="sign":locale="en_us.utf-8"else:locale="en_us.utf-8"
楼上说的都不错,补充一个,php-pcre包括了ctype和ole的数据格式。
configure。
fastjson有两种形式,标准数据格式和xml格式;标准数据格式是php开发语言和fastjson数据库都支持的;但是xml格式需要下载require库,对于php语言来说还是不太友好,可以再配置文件中加入xmlhttprequest,就可以直接使用require的xmlgetformdata来实现网页的数据请求了。
php-pcre。打开终端,cd到你需要编译的文件夹,把require的xmlize.php文件拷贝到你的xml目录中,