将url编码的字符串转换为python unicode字符串
问题描述:
我有以下形式编码的字符串:La + Cit%C3%A9 + De + la + West我存储在Python中的SQLite VARCHAR字段中。将url编码的字符串转换为python unicode字符串
这些显然是UTF-8编码的二进制字符串转换为urlencoded字符串。 问题是如何将其转换回一个Unicode字符串。 s ='La + Cit%C3%A9 + De + la + West'
我使用了urllib.unquote_plus(s)python函数,但它不会将%C3%A9转换为unicode字符。我看到这个'LaCitéde la West'而不是预期的'LaCitéDe la West'。
我在Ubuntu上运行我的代码,而不是Windows,编码是UTF-8。
答
正如我们所讨论的,它看起来像问题在于你是从一个unicode对象开始的,而不是一个字符串。你想要一个字符串:
>>> import urllib
>>> s1 = u'La+Cit%C3%A9+De+la+West'
>>> type(s1)
<type 'unicode'>
>>> print urllib.unquote_plus(s1)
La Cité De la West
>>> s2 = str(s1)
>>> type(s2)
<type 'str'>
>>> print urllib.unquote_plus(s2)
La Cité De la West
>>> import sys
>>> sys.stdout.encoding
'UTF-8'
你的例子对我来说工作方式是一样的。这是否是从VARCHAR字段的SQLite数据库中提取字符串的事实? – chmike
类型以您的示例返回str。随着s = u“La + Cit%C3%A9 + De + la + West”,类型(s)返回unicode并打印unquote_plus(s) 返回'LaCitéde la West'。问题因此是s的初始类型。使用print unquote_plus(str(s))解决了我的问题。 ! – chmike
如果你更新你的答案,我会给你答案。 – chmike