Python 使用 urllib.quote 编码字符
我正在尝试对非 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 技术交流群。
发布评论
评论(3)
请注意, encodeURIComponent() 确实不对字符 AZ az 0-9 - _ 进行编码。 ! ~ * ' ( )
。默认情况下,urllib.parse.quote()
会对其中一些字符进行编码,您需要传递safe
字符列表来获取Python的等效编码器。
在Python 3中,正确的解决方案是
from urllib.parse import quote
quote("ó", safe="!~*'()")
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在 Python 3 中,
urllib.quote
已重命名为urllib.parse.quote
。此外,在 Python 3 中,所有字符串都是 unicode 字符串(字节字符串称为
bytes
)。例子:
in Python 3 the
urllib.quote
has been renamed tourllib.parse.quote
.Also in Python 3 all strings are unicode strings (the byte strings are called
bytes
).Example: