如何在Python中对URL参数进行百分比编码?

问题:

如果我做

url = "http://example.com?p=" + urllib.quote(query)
  1. 它不将/编码为%2F(断开OAuth标准化)
  2. 它不处理Unicode(它抛出异常)

有更好的图书馆吗?

回答:

docs

urllib.quote(string[, safe])

使用%xx转义字符串替换字符串中的特殊字符。字母,数字和字符“_.”都不会引用。默认情况下,此函数用于引用URL的路径部分。可选的安全参数指定不应引用的其他字符 – 它的默认值
值为’/’

这意味着通过“安全”将会解决您的第一个问题:

>>> urllib.quote('/test')
'/test'
>>> urllib.quote('/test', safe='')
'%2Ftest'

关于第二个问题,有关于它的错误报告here。显然它是固定在python 3.你可以解决它通过编码utf8像这样:

>>> query = urllib.quote(u"Müller".encode('utf8'))
>>> print urllib.unquote(query).decode('utf8')
Müller

顺便看看urlencode

Code问答:codewenda.com
Stackoverflow:How to percent-encode URL parameters in Python?
本文链接 :http://codewenda.com/%E5%A6%82%E4%BD%95%E5%9C%A8python%E4%B8%AD%E5%AF%B9url%E5%8F%82%E6%95%B0%E8%BF%9B%E8%A1%8C%E7%99%BE%E5%88%86%E6%AF%94%E7%BC%96%E7%A0%81%EF%BC%9F/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

3 + 3 =