使用Python进行Unicode URL编码/解码
我有一个安卓应用,它使用
URLEncoder.encode(S.getSongArtist(),"UTF-8")
来编码一个unicode字符串,然后把这个字符串发送到一个AppEngine的python (2.7)网络服务。在这个服务上,我使用
urllib.unquote_plus(artist)
但是这样做没有得到正确的结果。我有一个输入是这样的:
Marie+Lafor%C3%AAt
解码后变成了
Marie Laforêt
如果我用javascript的url解码,比如说这个链接:http://meyerweb.com/eric/tools/dencoder/,我得到的结果是
Marie Laforêt
这是正确的结果。
我尝试使用
urllib.unquote(artist).decode('utf-8')
但是这会产生一个异常。任何提示都非常感谢。
编辑
Taxellool在评论中给出了正确的答案:
你试图解码的内容其实已经解码过了。试试这个:
urllib.unquote_plus(artist.encode('utf-8')).decode('utf-8')
2 个回答
1
我想你是在使用 urllib.unquote() 之前就进行了解码:
>>> print urllib.unquote_plus('Marie+Lafor%C3%AAt'.decode('utf-8'))
Marie Laforêt
如果你在 unquote 之后再解码,结果就会是你想要的:
>>> print urllib.unquote_plus('Marie+Lafor%C3%AAt').decode('utf-8')
Marie Laforêt
只要确保你不要把 unicode 传给 urllib.unquote_plus 就可以了。
3
Taxellool在评论中给出了正确的答案:
你想解码的内容其实已经解码过了。试试这个:
urllib.unquote_plus(artist.encode('utf-8')).decode('utf-8')