python中字符串的编码和解码

1. 经常使用的编码

  • ASCII:只能表示一些字母,数字和特殊的字符,占一个字节
  • GBK:国家简体中文字符集和繁体字符集,兼容ASCII,占两个字节
  • Unicode:可以表示全世界上全部的字符,Unicode有人说占4个字节也有人说占2个字节,但中文占2个字节
  • UTF-8:Unicode的压缩版,占1~3个字节,其中中文占三个字节

2.补充:计算机表示的单位:

bit: 位,计算机最小的表示单位
bytes:字节,最小的存储单位,1bytes=8bit,1bytes简写成1B
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
......python

3.ASCII编码

ASCII编码是基于拉丁字母一套编码,主要是显示现代英语和其西欧语言,是最先通用的单字节编码系统,具体ASCII对照表以下:

在对照表中须要记住的是大写字母A的编码是65,小写字母a的编码的97便可。
在python中能够使用chr和ord方法进行转换:编程

# 将数字类型转换成ASCII对应的字符
print(chr(97))  # a
# 将数字转换成对应的数据
print(ord("A"))  # 65
# 或者使用

但随着事件的发展,ASCII编码扩展到了256个字符,编码 对照表以下:

其中后128个字符称为扩展ASCII码编码

2.GBK和GB2312编码

因为ASCII编码只能由256个字符组成,然只能由1个字节来表示中文是不可能的,所以制定了GB2312编码,用来表示中文的对照表code

4.Unicode

为了解决各个国家编码冲突的问题,Unicode编码就所以而生,Unicode把全部语言都统一到一套编码里面,就会避免冲突,产生乱码。
Unicodeb标准在不断发展,最经常使用的是用两个字节表示一个字符,也有的字符是4个字节,可是中文是占两个字节。若是统一成Unicode编码,在存储和传输上就不划算blog

5.UTF-8编码

为了解决Unicode编码存储过大的问题,就推出了可变长编码UTF-8,UTF-8编码把一个Unicode字符依据不一样的数据大小编程1~6个字节,其中中文就占3个字节事件

6.编码和解码

1.编码操做

能够经过encode进行编码,其中语法以下:utf-8

  • 对字符串进行ASCII编码(只能转换数字,英文字母和一些符号)
# 方式1: 经过bytes方法
bytes('a', 'ASCII')
# 方式2:  经过encode方法进行
'a'.encode('ASCII')
  • 将字符串转换成gbk编码格式
# 方式1:  经过encode方法进行
print('你好'.encode('GBK'))  # 编码以后的结果为:b'\xc4\xe3\xba\xc3'
# 方式2: 经过bytes类型
print(bytes('我爱你', 'GBK'))  # 编码以后的结果为:b'\xce\xd2\xb0\xae\xc4\xe3'
  • 将字符串转换成Unicode编码格式
# 方式1:  经过encode方法进行
print('你好'.encode('unicode_escape'))  # 编码以后的结果为:b'\\u4f60\\u597d'
# 方式2: 经过bytes类型
print(bytes('我爱你', 'unicode_escape'))  # 编码以后的结果为:b'\\u6211\\u7231\\u4f60'
  • 将字符串转换成UTF-8编码格式
# 方式1:  经过encode方法进行
print('你好'.encode('utf-8'))  # 编码以后的结果为:b'\xe4\xbd\xa0\xe5\xa5\xbd'
# 方式2: 经过bytes类型
print(bytes('我爱你', 'utf-8'))  # 编码以后的结果为:b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'

2.解码操做

  • 将GBK编码格式转换成字符串
# 经过decode方法解码
print(b'\xc4\xe3\xba\xc3\xce\xd2\xb0\xae\xc4\xe3'.decode('GBK'))  # 解码以后结果为:你好我爱你
  • 将UTF-8编码格式转换成字符串
# 经过decode方法解码
print(b'\xe4\xbd\xa0\xe5\xa5\xbd\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'.decode('utf-8'))  # 解码以后结果为:你好我爱你
  • 将Uniconde编码格式转换成字符串
# 经过decode方法解码
print(b'\\u4f60\\u597d\\u6211\\u7231\\u4f60'.decode('GBK'))  # 解码以后结果为:你好我爱你
相关文章
相关标签/搜索