Python中文转换URL编码

目录

urllib 编码/解码

使用 urllib 模块中的 quote()unquote() 处理中文 URL 编码:

>>> import urllib
>>> data = '丽江'
>>> urllib.quote(data)
'%E4%B8%BD%E6%B1%9F'
>>> urllib.unquote('%E4%B8%BD%E6%B1%9F')
'\xe4\xb8\xbd\xe6\xb1\x9f'
>>> print urllib.unquote('%E4%B8%BD%E6%B1%9F')
丽江

处理不同编码

不同网站使用的字符集不同(百度贴吧使用 GBK,Google 等多数网站使用 UTF-8)。同一汉字在不同编码下的 URL 形式不同。

>>> import sys, urllib
>>> s = '丽江'
>>> urllib.quote(s.decode(sys.stdin.encoding).encode('gbk'))
'%C0%F6%BD%AD'
>>> urllib.quote(s.decode(sys.stdin.encoding).encode('utf8'))
'%E4%B8%BD%E6%B1%9F'

脚本示例

#!/usr/bin/python
import urllib
import sys

string = sys.argv[1]
string = unicode(string, "gbk")
utf8_string = string.encode("utf-8")
gbk_string = string.encode("gbk")
gbk = urllib.quote(gbk_string)
utf8 = urllib.quote(utf8_string)
print gbk
print utf8

#python