Android 用Python编码/解码Unicode URL
我有一个Android应用程序,它使用Android 用Python编码/解码Unicode URL,android,python,google-app-engine,unicode,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解码,例如: 我明白了 正确的结
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解码,例如:
我明白了
正确的结果
我试着用
urllib.unquote(artist).decode('utf-8')
但这会产生一个例外。如有任何提示,我们将不胜感激
编辑
Taxellool在评论中给出了正确答案:
你要解码的东西已经解码了。试试这个:
urllib.unquote_plus(artist.encode('utf-8')).decode('utf-8')
urllib.unquote_plus(artist.encode('utf-8')).decode('utf-8')
我猜您是在urllib.unquote()之前解码的: 如果您在解压缩后解码,结果将是您想要的:
>>> print urllib.unquote_plus('Marie+Lafor%C3%AAt').decode('utf-8')
Marie Laforêt
只需确保没有将unicode传递给urllib.unquote\u plus。我猜您是在urllib.unquote()之前解码的: 如果您在解压缩后解码,结果将是您想要的:
>>> print urllib.unquote_plus('Marie+Lafor%C3%AAt').decode('utf-8')
Marie Laforêt
只需确保您没有将unicode传递给urllib。unquote_plus。Taxellool在评论中给出了正确的答案:
您试图解码的内容已被解码。试试这个:
urllib.unquote_plus(artist.encode('utf-8')).decode('utf-8')
urllib.unquote_plus(artist.encode('utf-8')).decode('utf-8')
Taxellool在评论中给出了正确答案:
您试图解码的内容已被解码。试试这个:
urllib.unquote_plus(artist.encode('utf-8')).decode('utf-8')
urllib.unquote_plus(artist.encode('utf-8')).decode('utf-8')
在最后一个
urllib.unquote(artist.decode('utf-8')
中,您会遇到什么异常情况?它似乎在python2.7.5下正常工作,如果我在最后使用decode,我得到:UnicodeEncodeError:“ascii”编解码器无法对位置11-12的字符进行编码:序号不在范围内(128)您尝试解码的内容已经解码。试试这个:urllib.unquote_plus(artist.encode('utf-8')).decode('utf-8')
我在python shell中试过这个方法(就像Taxellool做的那样),效果是:>>>在服务器上打印urllib.unquote_plus(artist.decode('utf-8')Marie Laforêt这行代码生成exception@Taxellool:它应该是urllib.unquote\u plus(artist.encode('ascii')).decode('utf-8')
您在最后一个urlib.unquote(艺术家)中得到了什么异常。decode('utf-8')
?它似乎在python2.7.5下正常工作,如果我在最后使用decode,我得到:UnicodeEncodeError:“ascii”编解码器无法对位置11-12的字符进行编码:序号不在范围内(128)您尝试解码的内容已经解码。试试这个:urllib.unquote_plus(artist.encode('utf-8')).decode('utf-8')
我在python shell中试过这个方法(就像Taxellool做的那样),效果是:>>>在服务器上打印urllib.unquote_plus(artist.decode('utf-8')Marie Laforêt这行代码生成exception@Taxellool:它应该是urllib.unquote\u plus(artist.encode('ascii')).decode('utf-8')
在服务器上,这行代码生成一个异常:UnicodeEncodeError:'ascii'编解码器无法对位置11-12:序号不在范围(128)内的字符进行编码@scratchy:请参阅。我的答案也适用于Python 2。在服务器上,这行代码生成了一个异常:UnicodeEncodeError:“ascii”编解码器无法对位置11-12的字符进行编码:序号不在范围(128)内@scratchy:See。我的答案也适用于Python 2。