在 Python 中编码 URL 参数
URL 通常包含需要编码的参数,以防止错误并保持兼容性。在 Python 中,urllib.quote() 函数通常用于此目的。但是,它有一定的局限性:
使用 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中文网其他相关文章!