将URL编码字符串转换为Python Unicode字符串

2 投票
1 回答
5649 浏览
提问于 2025-04-17 02:51

我有一些字符串,它们的格式是这样的:La+Cit%C3%A9+De+la+West,这些字符串我存储在Python的SQLite数据库中的一个VARCHAR字段里。

这些字符串显然是用UTF-8编码的二进制字符串,然后又转成了url编码的格式。

我的问题是,怎么把它们转换回Unicode字符串。

比如说,我有一个字符串s = 'La+Cit%C3%A9+De+la+West'。

我用Python的urllib.unquote_plus(s)这个函数来处理,但它没有把%C3%A9转换成Unicode字符。结果我看到的是'La Cité De la West',而不是我期待的'La Cité De la West'。

我在Ubuntu系统上运行我的代码,而不是Windows,编码格式是UTF-8。

1 个回答

6

我们讨论过,问题似乎是你开始使用的是一个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'

撰写回答