参考地址: 

https://blog.csdn.net/u013066244/article/details/53057411

https://www.cnblogs.com/shine-lee/p/4504559.html

1. 编码和解码

编码encode:真实字符与二进制串的对应关系,真实字符→二进制串
解码decode:二进制串与真实字符的对应关系,二进制串→真实字符

 str转bytes叫encode,bytes转str叫decode,如上面的代码就是将抓到的字节流给decode成unicode数组

 

2. ASCII 以及UTF-8

ASCIII码是一个字节8个bit位标识一个字符,首位全是0,表示的字符集不够

UNICODE编码系统是为了表达任意语言设计的,为了防止存储上的冗余,(比如:对应的ASCII码的部分),采用了变长编码,但是变长编码为解码带来了困难,无法识别几个字节表示一个字符。

UTF-8是针对unicode变长编码设置的一种前缀码,根据前缀去判断是几个字节表示一个字符。

如果一个字节的第一位是0,则这个字节单独就是一个字符,如果第一位是1,则连续多少个1,就表示当前字符占用多少字节

 

3. python中的解码和编码

在python里面,编码解码其实是不同编码系统之间的转换,默认情况下,转换目标是UNICODE,即编码UNICODE-> STR, 解码: str -> UNICODE。 其中STR指的是字节流。

而:str.decode 是将字节流str按照指定的解码方式进行解码,并且转换成utf-8形式, u.encode是将unicode类按照指定的方式进行编码转换成字节流str.

注意:调用encode方法的是unicode对象生成的字节流。

 

字符就是unicode字符,字符串就是unicode字符数组

如果用以下代码测试:

print('a'=='\u0061')  

结果为True,说明两者是一样的

还有要注意的是,终端默认的编码格式是gbk,windows cmd中可以通过chcp查看以及改变,也可以到注册表修改终端默认编码(HKEY_CURRENT_USER console或者powershell下的codepage),936为简体中文,65001为utf8,两者都可显示中文,但为了方便中文输入,我将其默认设为936 

 

4. 文件中的编码格式

保存文本时也有编码格式,比如txt文件保存可选择则ASCII、utf8等,对py文件可在前两行注明编码方式# -*- coding: UTF-8 -*-
在python中读取文件

 

5. 编码名称和用途

 

编码名称用途
utf8 所有语言
gbk 简体中文
gb2312 简体中文
gb18030 简体中文
big5 繁体中文
big5hkscs 繁体中文
posted on 2018-08-13 10:40  srialy  阅读(173)  评论(0编辑  收藏  举报