Python解码URL示例代码

2026-10-13 0 阅读

1. 什么是URL编码和解码?

URL编码(也称为百分号编码)是一种将文本转换为二进制数据的方法,以便将其嵌入到URL中。URL只能处理ASCII字符集的一部分,因此URL编码用于将非ASCII字符、空格以及其他特殊字符转换为URL可以处理的格式。

解码URL是将编码后的URL转换回原始文本的过程。

2. Python中的urllib.parse模块

Python的urllib.parse模块提供了用于处理URL的工具,包括编码和解码功能。

3. 编码URL

以下是一个示例,演示如何使用urllib.parse.quote函数对URL进行编码:

from urllib.parse import quote

# 需要编码的URL部分
url_part = "你好, 世界! 123"

# 对URL部分进行编码
encoded_url = quote(url_part)

print("编码后的URL部分:", encoded_url)

输出结果可能类似于:

编码后的URL部分: %E4%BD%A0%E5%A5%BD%2C%20%E4%B8%96%E7%95%8C%21%20123

这里,非ASCII字符“你好, 世界!”被转换成了百分号编码。

4. 解码URL

以下是一个示例,演示如何使用urllib.parse.unquote函数对URL进行解码:

from urllib.parse import unquote

# 已编码的URL部分
encoded_url_part = "%E4%BD%A0%E5%A5%BD%2C%20%E4%B8%96%E7%95%8C%21%20123"

# 对URL部分进行解码
decoded_url = unquote(encoded_url_part)

print("解码后的URL部分:", decoded_url)

输出结果将是:

解码后的URL部分: 你好, 世界! 123

这里,编码后的URL部分被转换回原始文本。

5. 完整示例:解码查询参数

假设你从服务器收到了一个包含编码查询参数的URL,以下是如何解码查询参数的示例:

from urllib.parse import urlparse, parse_qs

# 假设的URL
url = "http://example.com/?name=%E4%BD%A0%E5%A5%BD&age=25"

# 解析URL
parsed_url = urlparse(url)

# 解码查询参数
decoded_params = parse_qs(parsed_url.query)

print("解码后的查询参数:", decoded_params)

输出结果将是:

解码后的查询参数: {'name': ['你好'], 'age': ['25']}

这里,查询参数name=%E4%BD%A0%E5%A5%BD和age=25被成功解码为name=你好和age=25。

通过上述示例,你可以看到如何在Python中编码和解码URL,这对于处理Web应用程序中的URL参数特别有用。

分享到: