首页  >  文章  >  后端开发  >  如何在 Python 中正确编码 URL 参数?

如何在 Python 中正确编码 URL 参数?

DDD
DDD原创
2024-10-27 07:00:03954浏览

How to Properly Encode URL Parameters in Python?

在 Python 中编码 URL 参数

URL 通常包含需要编码的参数,以防止错误并保持兼容性。在 Python 中,urllib.quote() 函数通常用于此目的。但是,它有一定的局限性:

  • 编码不完整: urllib.quote() 无法对“/”字符进行编码,这可能会破坏 OAuth 规范化。
  • Unicode 支持问题: 尝试处理 Unicode 字符串时会引发异常。

使用 urllib.parse.quote() 改进编码

Python 3 文档建议使用 urllib.parse.quote():

<code class="python">urllib.parse.quote(string, safe='/', encoding=None, errors=None)</code>

此函数通过允许附加字符的规范保持不带引号来提供更好的编码。缺省情况下,安全参数包含“/”。为安全传递空字符串解决了第一个问题:

<code class="python">>>> import urllib.parse
>>> urllib.parse.quote('/test', safe='')
'%2Ftest'</code>

Unicode 处理

Unicode 支持的第二个问题已在 Python 3 中修复。对于 Python 2 ,您可以将 Unicode 字符串编码为 UTF-8 来解决此问题:

<code class="python">>>> query = urllib.quote(u"Müller".encode('utf8'))
>>> print urllib.unquote(query).decode('utf8')
Müller</code>

替代方法:urlencode()

为了方便起见,请考虑使用 urlencode( )而不是手动对每个参数进行百分比编码。它自动编码键值对,支持 Unicode 和自定义分隔符:

<code class="python">>>> import urllib.parse
>>> params = urllib.parse.urlencode({'name': 'John Doe'})
'name=John+Doe'</code>

以上是如何在 Python 中正确编码 URL 参数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn