Python的url编码问题(ansi,utf8,gbk)
Python的url编码问题(ansi,utf8,gbk)。
urllib包提供了对url的编码和解码,示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
>>> 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的,示例如下:
1 2 3 4 5 6 7 |
>>> 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' |
参考资料:互联网等