将 url 编码的字符串转换为 python unicode 字符串

发布于 2024-12-06 04:14:18 字数 362 浏览 0 评论 0原文

我有以下形式编码的字符串:La+Cit%C3%A9+De+la+West,我将其存储在 python 中的 SQLite VARCHAR 字段中。

这些显然是 UTF-8 编码的二进制字符串转换为 urlencoded 字符串。 问题是如何将其转换回 unicode 字符串。 s = 'La+Cit%C3%A9+De+la+West'

我使用了 urllib.unquote_plus( s ) python 函数,但它不会将 %C3%A9 转换为 unicode 字符。我看到的是“La Cité De la West”,而不是预期的“La Cité De la West”。

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

I have strings encoded in the following form: La+Cit%C3%A9+De+la+West that I stored in a SQLite VARCHAR field in python.

These are apparently UTF-8 encoded binary strings converted to urlencoded strings.
The question is how to convert it back to a unicode string.
s = 'La+Cit%C3%A9+De+la+West'

I used the urllib.unquote_plus( s ) python function but it doesn't convert the %C3%A9 into a unicode char. I see this 'La Cité De la West' instead of the expected 'La Cité De la West'.

I'm running my code on Ubuntu, not windows and encoding is UTF-8.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

比忠 2024-12-13 04:14:18

正如我们所讨论的,问题似乎是从 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'

As we discussed, it looks like the problem was that you were starting with a unicode object, not a string. You want a string:

>>> 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'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文