Python用urllib.quote编码字符

时间:2011-06-21 19:41:22

标签: python encoding urllib

我正在尝试编码非ASCII字符,因此我可以将它们放在网址中并在urlopen中使用它们。问题是我想要一个类似JavaScript的编码(例如将ó编码为%C3%B3):

encodeURIComponent(ó)
'%C3%B3'

但是python中的urllib.quote会将ó作为%F3返回:

urllib.quote(ó)
'%F3'

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

2 个答案:

答案 0 :(得分:29)

您想确保使用unicode。

示例:

import urllib

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

输出:

%C3%B3

答案 1 :(得分:7)

Python 3 中,fwrite()已重命名为urllib.parse.quote

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

示例:

stdout