这是我们熟悉的字符串(string):‘我是帅哥’
‘我是帅哥’,组成这四个字符的字符(char)在计算机里以字节(byte)的方式存在,字符与字节之间的对应关系为编码(encoding)
常见的编码有(红色的常见)
GB2312编码:1981年5月1日发布的简体中文汉字编码国家标准。GB2312对汉字采用双字节编码,收录7445个图形字符,其中包括6763个汉字。 |
UTF-8和UTF-16编码:Unicode编码的转换格式,可变长编码,相对于Unicode更节省空间。UTF-16的字节序有大尾序(big-endian)和小尾序(little-endian)之别。BIG5编码:台湾地区繁体中文标准字符集,采用双字节编码,共收录13053个中文字,1984年实施。 |
Unicode编码:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。Unicode采用四个字节为每个字符编码。 |
GBK编码:1995年12月发布的汉字编码国家标准,是对GB2312编码的扩充,对汉字采用双字节编码。GBK字符集共收录21003个汉字,包含国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字。 |
GB18030编码:2000年3月17日发布的汉字编码国家标准,是对GBK编码的扩充,覆盖中文、日文、朝鲜语和中国少数民族文字,其中收录27484个汉字。GB18030字符集采用单字节、双字节和四字节三种方式对字符编码。兼容GBK和GB2312字符集。 |
下面在pycharm中编写python脚本说明
#字符串编码
s是字符串‘帅哥’的的转化bytes类型 的结果,分别按照"GB2312"编码和“UTF-8”编码转化为bytes,可看到转化的结果是不相同的。
#字符串编码
s=bytes('帅哥',encoding='GB2312')
print(type(s),s)
s=bytes('帅哥',encoding='UTF_8')
print(type(s),s)
#字符串编码+字节解码
同上,s是字符串‘帅哥’的按照"GB2312"编码的转化bytes类型的结果,r是s的按照"GB2312"编码的解码,r的类型是字符串,内容为‘帅哥’
# 字符串编码+字节解码
s=bytes('帅哥',encoding='GB2312')
print(type(s),s)
r=s.decode(encoding='GB2312')##第一种写法
print(type(r),r)
# r=bytes.decode(s,encoding='GB2312')##第二种写法
# print(type(r),r)