Python使用urllib模块对URL网址中的中文编码与解码实例详解

何川
何川
发布时间:2026-10-13| 5人浏览过
原创

本文详解Python中利用urllib模块处理URL中文编码与解码的方法。通过urllib.quote进行编码(支持UTF-8和GBK),使用urllib.unquote进行解码,解决URL中特殊字符歧义及非ASCII字符传输问题,并提供完整代码示例。

URL网址链接中的中文编码说明

中文采用GBK(GB2312)编码时,每个汉字对应两组%xx,格式为%xx%xx。

中文采用UTF-8编码时,每个汉字对应三组%xx,格式为%xx%xx%xx。

可以通过百度搜索工具进行URL编码和解码,默认使用GBK编码。

https://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD

Python3编码解码示例


# -*- coding: utf-8 -*-

# @File  : urldecode_demo.py
# @Date  : 2018-05-11

from urllib.request import quote, unquote

# 编码

url1 = "https://www.baidu.com/s?wd=中国"

# utf8编码,指定安全字符
ret1 = quote(url1, safe=";/?:@&=+$,", encoding="utf-8")
print(ret1)
# https://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD

# gbk编码
ret2 = quote(url1, encoding="gbk")
print(ret2)
# https%3A//www.baidu.com/s%3Fwd%3D%D6%D0%B9%FA


# 解码
url3 = "https://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD"

ret3 = unquote(url3, encoding='utf-8')
print(ret3)
# https://www.baidu.com/s?wd=中国

本实例中使用了urllib模块以及urllib.unquote()函数。


import urllib
rawurl=xxx
url=urllib.unquote(rawurl)

所用模块:urllib

所用函数:urllib.unquote()

案例


import urllib
rawurl = "%E6%B2%B3%E6%BA%90"
url = urllib.unquote(rawurl)
print url

输出

河源

urllib.unquote()的作用是对URL编码进行解码,与其对应的编码函数是urllib.quote()。


>>> import urllib
>>> urllib.quote("河源")
'%E6%B2%B3%E6%BA%90

问题扩展

URL为何要编码、解码?

通常需要对某些内容进行编码,是因为该内容不适合直接传输。原因多种多样,例如体积过大或包含隐私数据。对于URL而言,进行编码是为了避免其中某些字符引起歧义。

例如,URL参数字符串中使用key=value键值对的形式传递参数,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果value字符串中包含了=或者&,势必会造成接收URL的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。

此外,URL的编码格式采用的是ASCII码,而不是Unicode。这意味着不能在URL中包含任何非ASCII字符,例如中文。如果客户端浏览器和服务端浏览器支持的字符集不同,中文可能会导致问题。

更多关于Python使用urllib模块对URL编码与解码实例请查看下面的相关链接

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。