1python基础----字符编码

一、发展

ASCII编码--->>GBK\Shift_JIS......(万国码)----->unicode(统一)------>utf-8(解决unicode浪费)

可以这么理解: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 对象。

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解码

 

上一篇:记一次aes解密控制台中文乱码问题


下一篇:可编程的web浏览方式