>>> urllib.quote_plus(u'江南小财主')
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.5/urllib.py", line 1213, in quote_plus
return quote(s, safe)
File "/usr/lib/python2.5/urllib.py", line 1205, in quote
res = map(safe_map.__getitem__, s)
KeyError: u'\u6c5f'
因为从数据库里取出来的字符串是unicode。 但是quote_plus函数只接受ascii码, 所以需要先把字符串encode一下。
>>> urllib.quote_plus(u'江南小财主'.encode('utf8'))
'%E6%B1%9F%E5%8D%97%E5%B0%8F%E8%B4%A2%E4%B8%BB'
分享到:
2009-03-05 14:01
浏览 12356
评论
2 楼
dengyin2000
2009-03-06
不好意思 我用的是python2.5.2 ubuntu里面自带的。组要也是用在Django中。
2.5.2中没有这个Module。
>>> import urllib.parse
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named parse
另外你可以测试下
urllib.parse.quote_plus(u'北京')
注意在你的字符串前加上u. 这样表示是unicode string. 如果不是unicode string的话。我这边也是能执行的。
>>> urllib.quote_plus('北京')
'%E5%8C%97%E4%BA%AC'
1 楼
lwkyykk
2009-03-06
>>> import urllib.parse
>>> urllib.parse.quote_plus("北京")
'%E5%8C%97%E4%BA%AC'
>>> urllib.parse.quote_plus("北京".encode("gb2312"))
'%B1%B1%BE%A9'
>>>
完完好好的,不过我使用的是Python 3.0