python编码问题

2021-07-15 16:06

阅读:663

标签:python   code   直接   类型   一个   utf-16   转换   文件的   utf-8   

一、各种编码所用字节。

ascii
A : 00000010 8位 一个字节

unicode A : 00000000 00000001 00000010 00000100 32位 四个字节
中:00000000 00000001 00000010 00000110 32位 四个字节


utf-8 A : 00100000 8位 一个字节
中 : 00000001 00000010 00000110 24位 三个字节


gbk A : 00000110 8位 一个字节
中 : 00000010 00000110 16位 两个字节
1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
2,文件的储存,传输,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,asciid等),因为unicode占用空间过大。

二、python3中的编码方式:

str 在内存中是用unicode编码,不能够直接去储存和传输。
bytes类型:与str基本一致,只是编码方式不一样。
对于英文:
str :表现形式:s = ‘alex‘(所见即所得)
编码方式: 010101010 unicode编码
bytes :表现形式:s = b‘alex‘(所见即所得)
编码方式: 000101010 utf-8、gbk 等其它编码方式。

对于中文:
str :表现形式:s = ‘中国‘
编码方式: 010101010 unicode
bytes :表现形式:s = b‘x\e91\e91\e01\e21\e31\e32‘
编码方式: 000101010 utf-8 gbk。。。。

三、编码。encode 将unicode转换为utf-8或GBK (表现形式上是str转换为bytes)

s1 = "alex"
s11 = s1.encode("utf-8")
s12 = s1.encode("GBK")
s2 = "中国"
s22 = s2.encode("utf-8")
s23 = s2.encode((‘GBK‘))
print(s11,s12,s22,s23)

 

python编码问题

标签:python   code   直接   类型   一个   utf-16   转换   文件的   utf-8   

原文地址:https://www.cnblogs.com/qukouxiaoxue/p/9536527.html


评论


亲,登录后才可以留言!