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

原创 2006年06月04日 21:33:00

今天才注意到,百度和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!

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

BaiduMap---百度地图官方Demo之地理编码功能(介绍地址信息和坐标之间的相互转换)

<Lin

Google Protocol Buffer简介、开发指引及编码方式

总览: 开发引导: 欢迎来到protocol buffer开发文档。protocol buffers是一个语言无关、平台无关、序列化结构数据可扩展的用来协议交互、数据存储等的解决方案。 ...

Google Protocol Buffer 的编码方式

Google Protocol Buffer 使用到了两种编码方式:Varints 和 zigzag。一 Varints 编码每个 byte 只用 7bit 表示数字,最高位 bit作为标志位,如果为...

查看修改mysql编码方式

MySQL的默认编码是Latin1,不支持中文,要支持中文需要把数据库的默认编码修改为gbk或者utf8。 1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为...

java判断编码方式

  • 2013-05-11 17:09
  • 572KB
  • 下载

CentOS字符编码方式

在使用CentOS 系统时,安装的时候可能你会遇到英文的CentOS系统,在这中情况下安装CentOS系统时是默认安装(即英文)。安装完毕后,出现的各种中文乱码。那么,我们如何解决这种问题呢。  ...
  • zcczcw
  • zcczcw
  • 2012-08-22 19:14
  • 4361
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)