A-A+

Python的url编码问题(ansi,utf8,gbk)

2016年07月13日 Python 暂无评论 阅读 50 次

Python的url编码问题(ansi,utf8,gbk)。

urllib包提供了对url的编码和解码,示例如下:

>>> import urllib  
>>> data = '杭州' 
>>> print data 
杭州

>>> data  
'\xe6\x9d\xad\xe5\xb7\x9e'  
>>> urllib.quote(data)  
'%E6%9D%AD%E5%B7%9E' 

>>> urllib.unquote('%E6%9D%AD%E5%B7%9E')  
'\xe6\x9d\xad\xe5\xb7\x9e'  
>>> print urllib.unquote('%E6%9D%AD%E5%B7%9E')

“丽江”单词,细心的同学会发现贴吧url中出现的是%C0%F6%BD%AD,而非'%E4%B8%BD%E6%B1%9F',其实是编码问题。百度的是gbk(部分叫ANSI,导致C/C++程序员之家走了很多弯路,不过现在百度已经支持UTF8了),其他的一般网站比如google就是utf8的,示例如下:

>>> import sys,urllib   
>>> s = '杭州' 
>>> urllib.quote(s.decode(sys.stdin.encoding).encode('gbk'))  
%BA%BC%D6%DD  
>>> urllib.quote(s.decode(sys.stdin.encoding).encode('utf8'))  
'%E6%9D%AD%E5%B7%9E'

参考资料:互联网等

标签:

给我留言