关于 Python 3.x 中 bytes型数据 及 str型数据 的应用和格式转换

本文详细介绍了Python中encode和decode函数的使用方法,演示了如何将文本内容(str型数据)编码为二进制数据(bytes型数据),以及如何将二进制数据解码回文本内容。文章通过实例展示了不同字符集(utf-8、utf-16、gbk、gb2312)的编码和解码过程。
摘要由CSDN通过智能技术生成
"""
演示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)              # 输出 中文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值