问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python str与bytes编码解码

发布网友 发布时间:2022-04-22 09:46

我来回答

1个回答

热心网友 时间:2023-10-30 23:34

下面一张图搞懂编码、解码、编码表之间的关系。

不难看出,它们是一种根据编码表进行翻译、映射的过程:

实际上,字符串类型只有encode()方法,没有decode()方法,而bytes类型只有decode()方法而没有encode()方法。

二进制格式的数据也常称为裸数据(raw data),所以str数据经过编码后得到raw data,raw data解码后得到的str。

上面说了,编码是将字符数据转换成字节数据(raw data),解码是将字节数据转换成字符数据。在Python中字符数据也就是字符串,即str类型,字节数据也就是bytes类型或bytearray类型。

编码时,可以使用字节类型的构造方法bytes()、bytearray()来构造字节,也可以使用str类型的encode()方法来转换。

解码时,可以使用str类型的构造方法str()来构造字符串,也可以使用bytes、bytearray()类型的decode()方法。

另外需要注意的是,编码和解码的过程中都需要指定编码表(字符集),默认采用的是utf-8字符集。

例如,使用encode()的方式将str编码为bytes数据。

使用bytes()和bytearray()将str构造成bytes或bytearray数据,这两个方法都要求str->byte的过程中给定编码。

实际上,bytes()、bytearray()这两个方法构造字节数据的时候还有点复杂,因为可以从多个数据源来构造,比如字符串、整数值、buffer。如何使用这两个方法构造字节数据,详细内容参考help(bytes)和help(bytearray)给出的说明,这里给几个简单示例。

构造bytes的方式:

构造bytearray的方式:

解码是字节序列到str类型的转换。

例如,使用decode()方法进行解码"我"字,它的utf-8的编码对应为"\xe6\x88\x91":

使用str()进行转换。

当编码、解码的过程使用了不同的(不兼容的)编码表时,就会出现乱码。所以,解决乱码的唯一方式是指定对应的编码表进行编码、解码。

例如,使用utf-8编码"我"字,得到一个bytes序列,然后使用gbk解码这个bytes序列。

这里报错了,因为utf-8的字节序列里有gbk无法解码的字节。如果使用文本编辑器一样的工具去显化这个过程,得到的将是乱码字符。

原文地址: https://www.cnblogs.com/f-ck-need-u/p/10185965.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
物流师证书就业前景 大话西游之战歌,齐天小圣,能吃几个1000年的蟠桃,才能变摸样? 高手们啊... 大话西游外传刚上来怎么就给的齐天小圣是紫色品阶的 大话西游之战歌。齐天小圣怎嘛打技能 大话西游外传怎么获得变色齐天小圣 大话西游外传领变异齐天小圣的是什么序列号 如何设置代理服务器(如何设置代理服务器地址) 家庭劳动有什么? ...和“而” 字的 用法 比如想介词啦 并想用学而实习之 之和而中点一... 铜陵职业技术学院是什么类别的学校 python3 bytes转字符串的问题 python程序中参数为*args时,如何实现让用户输入实参? 请问python中这字符串转bytes怎么做算的? python byte 转换为 string 怎么永久去除腿毛 python3 str类型中存在bytes型 怎么进行转换 男人腿毛怎么彻底去掉 python 中 bytes 中的乱码怎么转成中文字符 腿毛怎么彻底去掉不会刺激皮肤啊? 男生腿毛多,想永久去除,需要怎么做呢? 怎么样去腿毛永久? 怎样可以永久去腿毛 腿毛怎么彻底去掉 拉卡拉与POS机有什么区别? 如何去掉腿毛能彻底呢? 拉卡拉pos机是不是骗人的? 如何去除腿毛生活妙招 拉卡拉pos机会过期吗 如何永久去除腿毛 拉卡拉pos机安全吗 了解python中bytes,str和unicode的区别 python的bytes类型有什么用,什么情况下使用 python3里的bytes和str还有int有什么区别 python2 和python3 encode 的区别 过户费怎么算二手车? 在Python中如何将字符串转换成字节对象 二手车过户费怎么算 Python 把一组bytes数据,按每2个字节取出写入一个新数组,如何做到? 二手车过户费用包括哪些 python怎么返回一个byte[] ? python 怎么将字符串转换为byte Python 2.7 中字节字符串的处理求助 二手车过户费如何算 python编程,4字节转换成浮点数 二手车过户需要哪些费用 廉洁文化进校园的手抄报 我字的读音? 廉政文化进校园 手抄报的内容 二手车过户流程及费用 廉洁自律手抄报内容