ASCII码

参考:https://baike.baidu.com/item/ASCII/309296?fromtitle=ascii%E7%A0%81&fromid=99077&fr=aladdin
((American Standard Code for Information Interchange): 美国信息交换标准代码)
只能编2^8个不同字符;一个字符使用8个bit位编码,但使用了7位,最高位是0,也就是128个字符。只是不能表示更多的字符。

ANSI

准确说,并不存在哪种具体的编码方式叫做ANSI,它只是一个Windows操作系统上的别称而已

Unicode

又被称为万国文字,可以编码多个国家的文字。至少一个字符使用2个字节,汉字使用3个字节。这种编码的缺点是:对于可以使用一个字节编码的字符也只能使用2个字节完成。

UTF-8

英文字符使用1个字节,汉字使用3个字节,很好的解决了前面提到的两种编码方式出现的问题,因而得到广泛使用。

我国使用的其他编码方式

GBK,GB2312,BIG5。它们只局限于在国内使用,不被国外认可。在GBK编码中,中文汉字占2个字节
GBK,IBM 在发明 Code Page 的时候将GBK放在第 936 页,所以叫 CP936

现代计算机python的常见字符编码

现在计算机中,在内存中采用unicode编码方式。
字符串类str里有一个encode()方法,它是从字符串向比特流的编码过程。而bytes类型恰好有个decode()方法,它是从比特流向字符串解码的过程。除此之外,我们查看Python源码会发现bytes和str拥有几乎一模一样的方法列表,最大的区别就是encode和decode

python3 三种字符串(无前缀,前缀u,前缀b),

无前缀和带“u”前缀:都是Unicode字符来存储的,也就是str类型的数据
“b”前缀的字符串:在网络数据传送中的数据经常使用,例如爬虫或访问网络文件。表示是使用ASCII码字符存储的,字符串中的英文字符只能是ASCII码中的字符,其他类型的字符串类型是byte类型的数据

str类型和byte类型之间的转换

字符串字节串
str→byte:将字符串转换为字节串使用 字串.encode(“utf-8”)
byte→str:将字节串转换为字符串使用 字串.decode(“utf-8”)

Type "help", "copyright", "credits" or "license()" for more information.
>>> a='jsagij'
>>> type(a)
<class 'str'>
>>> b=a.encode('utf-8')  #对a进行编码
>>> type(b)
<class 'bytes'>
>>> c=b.decode()	#对a进行解码
>>> type(c)
<class 'str'>