"""
演示python中 encode函数 和 decode函数 的用法
"""
"""
在 Python3.x 中,明晰地取分了文本和二进制数据。
文本总是 Unicode数据,是 str型数据;
二进制数据是 bytes型数据。
"""
# 先定义一个 str 型字符串,字符串总是Unicode字符集
# 定义时注意:无论如何定义,字符串的数据类型都是 str 型
s0 = '中文'
print(type(s0)) # 输出 <class 'str'>
ss0 = u'中文'
print(type(ss0)) # 输出 <class 'str'>
"""
文本与二进制编码之间的转化:
文本内容(str型数据) 通过 encode函数进行编码,转化成二进制编码(bytes型数据);
二进制编码(bytes型数据) 通过 decode函数进行解码,转化成文本内容(str型数据);
"""
"""
encod而函数有两个参数:
第一个参数是(encoding = "要使用的编码");<-encoding = 可以省略
第二个参数是抛出异常(errors = "strict");<- 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace'
以及通过 codecs.register_error() 注册的任何值。
可以省略。
"""
# 对 s0 编码,使用 encode函数,转化成二进制编码
# 编成 utf-8 字符集
s1 = s0.encode('utf-8')
print(type(s1)) # 输出 <class 'bytes'>
print(s1) # 输出 b'\xe4\xb8\xad\xe6\x96\x87'
# 编成 utf-16 字符集
s2 = s0.encode('utf-16')
print(type(s2)) # 输出 <class 'bytes'>
print(s2) # 输出 b'\xff\xfe-N\x87e'
# 编成 gbk 编码格式
s3 = s0.encode('gbk')
print(type(s3)) # 输出 <class 'bytes'>
print(s3) # 输出 b'\xd6\xd0\xce\xc4'
# 编成 gb2312 编码格式
s4 = s0.encode('gb2312')
print(type(s4)) # 输出 <class 'bytes'>
print(s4) # 输出 b'\xd6\xd0\xce\xc4'
"""
decode函数 也有两个参数:
第一个参数是(encoding="要使用的编码")<-若省略,则按照utf-8的编码格式解码
第二个参数是(errors = "strict")<- 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace'
以及通过 codecs.register_error() 注册的任何值。
可以省略。
"""
# 对s1解码
s10 = s1.decode(encoding="utf-8")
print(type(s10)) # 输出 <class 'str'>
print(s10) # 输出 中文
s11 = s1.decode()
print(type(s11)) # 输出 <class 'str'>
print(s11) # 输出 中文
# 对 s2 解码
s20 = s2.decode(encoding="utf-16")
print(type(s20)) # 输出 <class 'str'>
print(s20) # 输出 中文
# s21 = s2.decode()
# print(type(s21)) # 输出 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
# print(s21)
# 对 s3 解码
s30 = s3.decode(encoding="gbk")
print(type(s30)) # 输出 <class 'str'>
print(s30) # 输出 中文
# 对 s4 解码
s40 = s4.decode(encoding="gb2312")
print(type(s40)) # 输出 <class 'str'>
print(s40) # 输出 中文
关于 Python 3.x 中 bytes型数据 及 str型数据 的应用和格式转换
最新推荐文章于 2023-04-14 09:25:16 发布
本文详细介绍了Python中encode和decode函数的使用方法,演示了如何将文本内容(str型数据)编码为二进制数据(bytes型数据),以及如何将二进制数据解码回文本内容。文章通过实例展示了不同字符集(utf-8、utf-16、gbk、gb2312)的编码和解码过程。
摘要由CSDN通过智能技术生成