Python 使用 urllib.quote 编码字符

发布于 11-16 15:47 字数 450 浏览 3 评论 0原文

我正在尝试对非 ASCII 字符进行编码,以便将它们放入 url 中并在 urlopen 中使用它们。问题是我想要像 JavaScript 那样的编码(例如将 ó 编码为 %C3%B3):

encodeURIComponent(ó)
'%C3%B3'

但是 python 中的 urllib.quote returns ó as %F3

urllib.quote(ó)
'%F3'

我想知道如何在Python中实现像javascript的encodeURIComponent这样的编码,以及是否可以编码非<代码>ISO 8859-1 字符,如中文。谢谢!

I'm trying to encode non-ASCII characters so I can put them inside an url and use them in urlopen. The problem is that I want an encoding like JavaScript (that for example encodes ó as %C3%B3):

encodeURIComponent(ó)
'%C3%B3'

But urllib.quote in python returns ó as %F3:

urllib.quote(ó)
'%F3'

I want to know how to achieve an encoding like javascript's encodeURIComponent in Python, and also if I can encode non ISO 8859-1 characters like Chinese. Thanks!

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

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

发布评论

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

评论(3

女皇必胜2024-11-23 15:47:10

在 Python 3 中,urllib.quote 已重命名为 urllib.parse.quote

此外,在 Python 3 中,所有字符串都是 unicode 字符串(字节字符串称为 bytes)。

例子:

from urllib.parse import quote

print(quote('ó'))
# output: %C3%B3

in Python 3 the urllib.quote has been renamed to urllib.parse.quote.

Also in Python 3 all strings are unicode strings (the byte strings are called bytes).

Example:

from urllib.parse import quote

print(quote('ó'))
# output: %C3%B3
兮颜2024-11-23 15:47:10

您需要确保您使用的是 unicode。

示例:

import urllib

s = u"ó"
print urllib.quote(s.encode("utf-8"))

输出:

%C3%B3

You want to make sure you're using unicode.

Example:

import urllib

s = u"ó"
print urllib.quote(s.encode("utf-8"))

Outputs:

%C3%B3

睡美人的小仙女2024-11-23 15:47:10

请注意, encodeURIComponent() 确实不对字符 AZ az 0-9 - _ 进行编码。 ! ~ * ' ( )。默认情况下,urllib.parse.quote()会对其中一些字符进行编码,您需要传递safe字符列表来获取Python的等效编码器。

在Python 3中,正确的解决方案是

from urllib.parse import quote

quote("ó", safe="!~*'()")

Note that encodeURIComponent() does not encode the chars A-Z a-z 0-9 - _ . ! ~ * ' ( ). By default urllib.parse.quote() does encode some of these chars, you need to pass the safe chars list to get an equivalent encoder for Python.

In Python 3 the correct solution is

from urllib.parse import quote

quote("ó", safe="!~*'()")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文