参考地址:
https://blog.csdn.net/u013066244/article/details/53057411
https://www.cnblogs.com/shine-lee/p/4504559.html
1. 编码和解码
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. 文件中的编码格式
5. 编码名称和用途
编码名称 | 用途 |
---|---|
utf8 | 所有语言 |
gbk | 简体中文 |
gb2312 | 简体中文 |
gb18030 | 简体中文 |
big5 | 繁体中文 |
big5hkscs | 繁体中文 |