千家信息网

Python3是如何解决棘手的字符编码问题的

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,Python3是如何解决棘手的字符编码问题的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python3 最重要的一项改
千家信息网最后更新 2026年11月03日Python3是如何解决棘手的字符编码问题的

Python3是如何解决棘手的字符编码问题的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Python3 最重要的一项改进之一就是解决了 Python2 中字符串与字符编码遗留下来的这个大坑。Python 编码为什么那么蛋疼?已经介绍过 Python2 字符串设计上的一些缺陷:

  • 使用 ASCII 码作为默认编码方式,对中文处理很不友好。

  • 把字符串牵强地分为 unicode 和 str 两种类型,误导开发者

当然这并不算 Bug,只要处理的时候多留心也可以避免这些坑。但在 Python3 两个问题都很好的解决了。

首先,Python3 把系统默认编码设置为 UTF-8

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>>

然后,文本字符和二进制数据区分得更清晰,分别用 str 和 bytes 表示。文本字符全部用 str 类型表示,str 能表示 Unicode 字符集中所有字符,而二进制字节数据用一种全新的数据类型,用 bytes 来表示。

str

>>> a = "a"
>>> a
'a'
>>> type(a)


>>> b = "禅道"
>>> b
'禅道'
>>> type(b)

bytes

Python3 中,在字符引号前加'b',明确表示这是一个 bytes 类型的对象,实际上它就是一组二进制字节序列组成的数据,bytes 类型可以是 ASCII范围内的字符和其它十六进制形式的字符数据,但不能用中文等非ASCII字符表示。

>>> c = b'a'
>>> c
b'a'
>>> type(c)


>>> d = b'\xe7\xa6\x85'
>>> d
b'\xe7\xa6\x85'
>>> type(d)

>>>

>>> e = b'禅道'
File "", line 1
SyntaxError: bytes can only contain ASCII literal characters.

bytes 类型提供的操作和 str 一样,支持分片、索引、基本数值运算等操作。但是 str 与 bytes 类型的数据不能执行 + 操作,尽管在py2中是可行的。

>>> b"a"+b"c"b'ac'>>> b"a"*2b'aa'>>> b"abcdef\xd6"[1:]b'bcdef\xd6'>>> b"abcdef\xd6"[-1]214>>> b"a" + "b"Traceback (most recent call last):  File "", line 1, in TypeError: can't concat bytes to str

python2 与 python3 字节与字符的对应关系

encode 与 decode

str 与 bytes 之间的转换可以用 encode 和从decode 方法。

encode 负责字符到字节的编码转换。默认使用 UTF-8 编码准换。

>>> s = "Python"
>>> s.encode()
b'Python\xe4\xb9\x8b\xe7\xa6\x85'
>>> s.encode("gbk")
b'Python\xd6\xae\xec\xf8'

decode 负责字节到字符的解码转换,通用使用 UTF-8 编码格式进行转换。

>>> b'Python\xe4\xb9\x8b\xe7\xa6\x85'.decode()
'Python'
>>> b'Python\xd6\xae\xec\xf8'.decode("gbk")
'Python'

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

字符 编码 类型 数据 字节 二进制 字符串 问题 就是 文本 UTF-8 中文 处理 帮助 支持 棘手 可行 清楚 重要 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东猪兼强互联网科技有限公司 科技互联网龙头 互联网科技财经 互联网中国科技 互联网 卓越科技 奇酷互联网络科技 易通互联网络科技有限公司 米客互联网科技 重庆科技学院互联网 互联网巨头投资的硬核科技 开启互联网科技时代小说 创业天下互联网科技有限公司 重庆互联网医院沙龙医盟信息科技 武汉健翔互联网络科技有限公司 佛山市翊博互联网络科技有限公司 中国互联网有什么科技 梅州GM互联网络科技有限公司 本届互联网大会上的黑科技 求路客互联网科技电话 互联网的科技体现在哪里 新华互联网科技学校 河南真二互联网科技有限公司 礼当家互联网科技 远信互联网科技 上游互联网科技 湖南洣水互联网科技有限公司扣款 乌鲁木齐新华智原互联网科技学校 科技大学互联网 工业互联网展湾科技股份有限公司 西安左小互联网科技有限公司
0