百度和Google的URL编码方式探索

今天才注意到,百度和Google的URL编码方式不一样。

比如我们搜“技术”这个词,然后观察IE地址栏。


用Baidu得到的结果是
http://www.baidu.com/s?wd=%BC%BC%CA%F5&cl=3

用Google得到的结果是
http://www.google.com/search?hl=zh-CN&q=%E6%8A%80%E6%9C%AF&lr=

即,baidu_urlencode("技术")=%BC%BC%CA%F5  , google_urlencode("技术")=%E6%8A%80%E6%9C%AF
,很明显不一样,那么两者分别用的是什么编码算法呢?

赶快拿出可爱的Python来帮我们解决问题吧。
>>> import urllib
>>> url=urllib.unquote('http://www.baidu.com/s?wd=%BC%BC%CA%F5&cl=3')
>>> url
'http://www.baidu.com/s?wd=/xbc/xbc/xca/xf5&cl=3'
>>> print url.decode('gb2312')
http://www.baidu.com/s?wd=技术&cl=3
>>>

很明显,baidu的url编码方式是gb2312。那么google呢?能否如法泡制?

>>> url2=urllib.unquote('http://www.google.com/search?hl=zh-CN&q=%E6%8A%80%E6%9C%AF&lr=')
>>> url2
'http://www.google.com/search?hl=zh-CN&q=/xe6/x8a/x80/xe6/x9c/xaf&lr='
>>> print url2.decode('gb2312')
Traceback (most recent call last):
  File "<input>", line 1, in ?
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 40-41: illegal multibyte sequence

很遗憾,报错了,这是因为选择了gb2312解码是不对的。那就试试别的吧,可能是'utf-8'吧,go on

>>> print url2.decode('utf-8')
http://www.google.com/search?hl=zh-CN&q=技术&lr=

yeah,成功了。这说明google对url的编码是utf-8

 

Python is so cool!

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值