SQL吧 网站源码下载 企业网站源码下载 免费网站源码下载

当前位置: 主页 > 教程 > 程序 > php >

linux curl 中文乱码解决方案

时间:2014-06-25 09:56来源:未知 作者:SQL吧信息编辑 点击:
shell用curl抓取页面乱码,参考一下2方面: 1.是用curl抓取的数据是用类似gzip压缩后的数据导致的乱码。 乱码:curl www.1ting.com | more 乱码:curl -H Accept-Encoding: gzip www.1ting.com | more 不乱码:
企业站建365全包!先制作!后付款!600多套模版任你选择!晴网www.138.la专注企业站建仿站、域名、空间、云主机、服务器, 咨询电话:020-29031983 qq:2769485357

shell用curl抓取页面乱码,参考一下2方面:

1.是用curl抓取的数据是用类似gzip压缩后的数据导致的乱码。
乱码:curl www.1ting.com | more
乱码:curl -H "Accept-Encoding: gzip" www.1ting.com | more
不乱码:curl -H "Accept-Encoding: gzip" www.1ting.com | gunzip | more

不乱码:curl www.1616.net | more
乱码:curl -H "Accept-Encoding: gzip" www.1616.net | more
不乱码:curl -H "Accept-Encoding: gzip" www.1616.net | gunzip | more

下面的a,b解释的是www.1ting.com,c,d解释是的www.1616.net
a.某个url,如果用不加任何选项的curl命令抓取后乱码,在curl后面加上Accept-Encoding: gzip,后面不加gunzip,则抓取的数据会乱码。
b.某个url,如果用不加任何选项的curl命令抓取后乱码,在curl后面加上Accept-Encoding: gzip,后面加上gunzip,则抓取的数据不会乱码。

c.某个url,如果用不加任何选项的curl命令抓取后不乱码,在curl后面加上Accept-Encoding: gzip,后面不加gunzip,则抓取的数据会乱码。
d.某个url,如果用不加任何选项的curl命令抓取后不乱码,在curl后面加上Accept-Encoding: gzip,后面加上gunzip,则抓取的数据不会乱码。

小总:
也就是说在curl后面加上Accept-Encoding: gzip,再用gunzip解压缩,则基本上可以保存数据不乱码。

2.GBK或者UTF8汉字之类的乱码

iconv命令是运行于linux平台的文件编码装换工具。当我们在linux系统shell下通过curl命令或者wget命令获取一个网页的源代码,当网页的编码与当前操作系统坏境的设置的编码不同时,就会发现网页中有很多乱码。如在网页"meta"标签"charset"属性值设置为"gb2312"的http://www.baidu.com百度首页,在系统坏境变量"$LANG"值为"en_US.UTF-8"的linux系统即会产生中文乱码现象。这时我们可以尝试使用iconv命令进行编码装换,让中文不在是乱码。如下命令是处理百度在系统坏境变量"$LANG"值为"en_US.UTF-8"的linux系统乱码的问题的解决方案之一:

curl http://www.baidu.com|iconv -f gb2312 -t utf-8  

当然,你也通过改变系统坏境变量与百度首页的"charset"值一致,也可以解决此乱码问题,如下命令:

set LANG="gb2312" 

export LANG  

curl http://www.baidu.com 


iconv命令的详细语法:

iconv [选项..] [文件..]
选项:
-f 输入编码
-t 输出编码
-l 列出所有已知的编码
-o 输出文件


 

(责任编辑:SQL吧信息编辑)
顶一下
(0)
0%
踩一下
(0)
0%
0
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
栏目列表
推荐内容