Python3 URL编码与解码:自定义GBK与UTF-8编码实现

拾光
拾光
发布时间:2026-10-11| 3人浏览过
原创

本文介绍如何在Python3中实现自定义编码类型的URL编码与解码。通过封装Urlchuli类,支持指定GBK或UTF-8等编码格式,解决中文URL处理中的乱码问题。提供完整的编码与解码调用示例,适用于需要灵活处理不同字符集编码的Web开发场景。

Python3 URL编码与解码实现

在Web开发中,URL编码(Percent-encoding)用于将特殊字符或中文转换为可在URL中安全传输的格式。Python3标准库urllib.parse提供了quote和unquote方法,但默认编码通常为UTF-8。当需要处理GBK等特定编码的中文数据时,直接调用标准方法可能导致乱码。因此,封装一个支持自定义编码类型的处理类是常见且实用的做法。

核心实现:Urlchuli类

以下代码定义了一个Urlchuli类,用于处理URL编码与解码。该类接受原始字符串和编码类型(默认UTF-8)作为参数,并提供编码和解码两个方法。

# coding:utf-8
import urllib.parse

class Urlchuli():
  """Url处理类,需要传入两个实参:Urlchuli('实参','编码类型'),默认utf-8  
  url编码方法:url_bm() url解码方法:url_jm()"""

  def __init__(self,can,mazhi='utf-8'):
    self.can = can
    self.mazhi = mazhi

  def url_bm(self):
    """url_bm() 将传入的中文实参转为Urlencode编码"""
    quma = str(self.can).encode(self.mazhi)
    bianma = urllib.parse.quote(quma)
    return bianma

  def url_jm(self):
    """url_jm() 将传入的url进行解码成中文"""
    quma = str(self.can)
    jiema = urllib.parse.unquote(quma,self.mazhi)
    return jiema

该类包含两个关键方法:
- url_bm():执行URL编码。首先将输入字符串按指定编码(如GBK)转换为字节序列,再使用urllib.parse.quote进行百分号编码。
- url_jm():执行URL解码。使用urllib.parse.unquote方法,并传入指定的编码类型,将编码后的字符串还原为原始中文。

解码调用示例

当需要解码一个已编码的URL字符串时,实例化Urlchuli类并调用url_jm()方法。注意,编码类型必须与编码时使用的类型一致,否则可能出现乱码。

# coding:utf-8

from urlbm import Urlchuli

a = Urlchuli('%B2%E2%CA%D4%CA%C7%B7%F1%B3%C9%B9%A6','gbk') # 第一个是传入的实参,第二个是需要url解码的类型,可以是utf-8、gbk或其他
print(a.url_jm()) # 打印结果:测试是否成功(这里需要注意,如果是utf-8会出现乱码)

上述示例中,传入的编码字符串%B2%E2%CA%D4%CA%C7%B7%F1%B3%C9%B9%A6是使用GBK编码生成的。通过指定'gbk'作为编码类型,解码结果正确显示为“测试是否成功”。若错误地指定为UTF-8,则会导致解码失败并输出乱码。

编码调用示例

当需要将中文文本转换为URL编码格式时,同样使用Urlchuli类,但调用url_bm()方法。编码类型同样需要与目标系统期望的编码格式一致。

# coding:utf-8

from urlbm import Urlchuli

a = Urlchuli('测试是否成功','gbk') # 第一个是传入的实参,第二个是选填url编码的类型(默认utf-8),可以是utf-8、gbk或其他
print(a.url_bm()) # 打印结果:%B2%E2%CA%D4%CA%C7%B7%F1%B3%C9%B9%A6

此示例将中文“测试是否成功”使用GBK编码转换为URL编码格式,输出结果为%B2%E2%CA%D4%CA%C7%B7%F1%B3%C9%B9%A6。若未指定编码类型,默认使用UTF-8,输出结果将不同。

总结

通过封装Urlchuli类,我们可以灵活处理不同编码类型的URL编码与解码问题。关键在于确保编码和解码时使用的编码类型一致,以避免乱码。该方法适用于需要处理GBK、UTF-8等多种编码格式的Web开发场景。

以上就是Python3 URL编码与解码:自定义GBK/UTF-8编码处理的详细内容,更多关于Python 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 算法库。