Unicode URL使用Python进行编码/解码

时间:2014-03-18 06:37:38

标签: android python google-app-engine unicode

我有一个使用

的Android应用
URLEncoder.encode(S.getSongArtist(),"UTF-8")

编码发布到AppEngine python(2.7)Web服务的unicode字符串。在我使用的服务上

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 个答案:

答案 0 :(得分:3)

Taxellool在评论中得到了正确答案:

您尝试解码的内容已经解码。试试这个:

urllib.unquote_plus(artist.encode('utf-8')).decode('utf-8')

答案 1 :(得分:1)

我猜你在urllib.unquote()之前解码:

>>> print urllib.unquote_plus('Marie+Lafor%C3%AAt'.decode('utf-8'))  
Marie Laforêt

如果您在取消引用后解码,结果将是您想要的结果:

>>> print urllib.unquote_plus('Marie+Lafor%C3%AAt').decode('utf-8')  
Marie Laforêt

请确保您没有将unicode传递给urllib.unquote_plus。