python中各种方式的编码问题

一段内容可以有多种编码方式,如unicode,utf-8,gbk,由于unicode编码一个字符四个字节。传输时费的流量太多,一般不用这个编码方式传。虽然编码方式不一样,但实际上表示的内容是一样的,好比二进制,十进制,十六进制,数字可以有这么多中表达方式。字符也是同样的道理。而一般网络传输的物理层只认识二进制,电线只能传0,1嘛,和灯泡的开关一样0就是关,1就是开,物理层有各种协议可以把bytes类型的数据转化成二进制。而且这些协议只认识byte类型。如果不是bytes类型是传不过去的。
在python2中默认是unicode编码方式,
python3中默认是utf-8对的编码方式。但是字符串还保留着unicode编码方式

with open(encoding)# 此处的encoding是文件是以什么编码方式写的,就以哪个编码方式打开
socket模块中的 sk.recv(9) # 9表示字节,byte类型的字节。
struct模块中的 pack方法,返回的是byte类型。
encode()放回给定编码的bytes类型,源码中大致意思是把python格式转化为C语言格式。因为C语言是最底层的语言之一。decode解码成原本类型


a = 'kdkd'

f = bytes(a, encoding='utf-8')  # 转化为utf-8的bytes类型,相当于b’kdkd‘和a.encode('utf-8')

print(f)  # b'kdkd'

print(len(f))  #  4  # 一个字符一个字节


b = '看到方法'

d = bytes(b, encoding='utf-8')

print(b.encode())  # b'\xe7\x9c\x8b\xe5\x88\xb0\xe6\x96\xb9\xe6\xb3\x95'

print(d)  # b'\xe7\x9c\x8b\xe5\x88\xb0\xe6\x96\xb9\xe6\xb3\x95'

print(len(d))  # 12  # 一个中文字符3个字节

物理传输信道只能传二进制,
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值