10字符编码

一、发展

ASCII编码(2**8,表示256个字符)--->GBK\Shift_JIS......(万国码)----->unicode(统一)---->utf-8(解决unicode浪费,英文字符用1Bytes表示,中文字符用3Bytes)

可以这么理解:unicode、gbk、gb2312是编码字符集.utf-8是 unicode的一种实现方式

二、python3中str和bytes

在python3中,有3中字符串类型,str用于unicode文本(ASCII或其他),bytes用于二进制数据(包括编码的文本),bytearray是bytes的一种可变的变体。

python3中将str直接存成unicode

bytes是Python 3中特有的,Python 2 里不区分bytes和str。

bytes 类型的数据非常适合在互联网上传输,可以用于网络通信编程;

bytes 也可以用来存储图片、音频、视频等二进制格式的文件。

 有三种方法可以得到bytes类型的字符串:

1.如果字符串的内容都是 ASCII 字符,那么直接在字符串前面添加b前缀就可以转换成 bytes。
2.bytes 是一个类,调用它的构造方法,也就是 bytes(),可以将字符串按照指定的字符集转换成 bytes;如果不指定字符集,那么默认采用 UTF-8。
3.字符串本身有一个 encode() 方法,该方法专门用来将字符串按照指定的字符集转换成对应的字节串;如果不指定字符集,那么默认采用 UTF-8。

三、encode和decode 

# decode() 方法以指定的编码格式解码 bytes 对象。默认编码为 'utf-8'。该方法返回解码后的字符串。
# encode() 方法以指定的编码格式编码字符串。该方法返回编码后的字符串,它是一个 bytes 对象,只有unicode才有encode()方法。

s = ''
print(s.encode('gbk'))    #str可以通过encode编码字符串,b'\xce\xd2'
print(s.encode('utf-8'))  #str可以通过encode编码字符串,b'\xe6\x88\x91'

print(b'\xce\xd2'.decode('gbk'))         #bytes对象通过decode解码
print(b'\xe6\x88\x91'.decode('utf-8'))  #bytes对象通过decode解码

 

posted @ 2021-04-03 17:53  cheng4632  阅读(213)  评论(0)    收藏  举报