Python字符编码演进与Python2/3差异解析

沈亦白
沈亦白
发布时间:2026-10-14| 3人浏览过
原创

本文梳理了从ASCII到UTF-8的字符编码发展史,重点解析Python2与Python3在字符串处理上的核心差异。通过具体代码示例,展示了Python2中字节串与Unicode互转的decode/encode流程,以及Python3中字符串直接编码为字节串的新机制,帮助开发者理解不同版本下的编码转换逻辑。

字符编码发展简史

字符编码技术的发展经历了从单一国家标准到全球统一标准的演变过程。

美国于1963年制定了ASCII编码标准,该标准包含127个字符,每个字符占用1个字节。

中国于1980年发布了GB2312编码标准,共收录7445个字符,其中包括6763个汉字和682个其他符号。

1993年,中国发布了GB13000编码标准,收录汉字数量增至20902个。

1995年,GBK1.0标准发布,收录汉字数量达到21003个。

2000年,GB18030标准推出,收录汉字数量大幅扩展至70244个。

1991年,Unicode(俗称“万国码”)标准确立,旨在实现统一编码。通常情况下,Unicode字符占用2个字节,但对于部分复杂汉字,可能需要占用4个字节。

UTF-8是一种可变长度的字符编码方式,能够高效地表示Unicode标准中的所有字符。

Python中的编码与解码应用

在Python编程中,正确理解和使用字符编码与解码机制至关重要。

在Python2版本中,字符串进行字符编码转换需要遵循特定流程。

具体转换路径为:首先将字节串通过decode方法指定原始字符编码转换为Unicode字符串,随后再通过encode方法指定新的字符编码转换回字节串。

Python2编码转换示例


#!/usr/bin/env python
# -*- coding:utf-8 -*-

utf_8_a = '测试'
print(utf_8_a,type(utf_8_a),len(utf_8_a)) #打印utf_8_a的内容、类型及长度
unicode_a = utf_8_a.decode('utf-8') #对utf_8_a进行解码成unicode
print(unicode_a,type(unicode_a),len(unicode_a))
gbk_a = utf_8_a.decode('utf-8').encode('gbk') #先解码在编码成gbk
print(gbk_a,type(gbk_a),len(gbk_a)) #打印gbk_a的内存、类型及长度
print(gbk_a.decode('gbk'))
----------------------------------------------------
pytharm(python2.6)运行结果:
('\xe6\xb5\x8b\xe8\xaf\x95', <type 'str'>, 6)
(u'\u6d4b\u8bd5', <type 'unicode'>, 2)
('\xb2\xe2\xca\xd4', <type 'str'>, 4)
测试

在Python3版本中,定义的字符串默认即为Unicode类型,因此无需先进行解码操作,可以直接通过encode方法将字符串编码为新的字符编码格式。

具体转换路径简化为:字符串直接通过encode方法指定新的字符编码转换为字节串。

Python3编码转换示例


#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
utf_8_a = '测试'
print(utf_8_a,type(utf_8_a),len(utf_8_a)) #打印utf_8_a的内容、类型及长度
gbk_a = utf_8_a.encode('gbk')
print(gbk_a.decode('gbk'),type(gbk_a),len(gbk_a))
 --------------------------------------------------------
pycharm(python3.6)运行结果:
测试 <class 'str'> 2
测试 <class 'bytes'> 4

以上关于Python字符编码的理解与操作示例,旨在为读者提供清晰的参考,欢迎进一步探讨与实践。

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

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 算法库。