字符编码
字符编码:字符有很多种比如说不同的语言就包含很多字符,比如说汉字,字母,数字。而要在计算机中存储,必须转化成二进制进行存储,为编码;从硬盘中读出数据需要解码;
- ASCII码表(二进制编码,英文编码,不包含中文等字符)
- gbk 16位 中文加英文 (也就是 gb2312)
- Shift_JIS 日文加英文
- Euc-kr 韩文加英文
- Unicode 万国码 32 位
16位一个中文字符,生僻字用4个字节,或者8个字节 - utf-8
英文 一个字节,中文三个字节
对Unicode的优化
内存固定使用 Unicode ,我们可以改变的是存入硬盘的采用格式,比如说gbk,utf-8
文本文件存取乱码:
存乱了:编码格式一定要设置合适,再存入,通常 'utf-8'
取乱了:说明你读文件的编码格式不对,文件以什么编码格式存,就应该用什么方式取。
python3 默认读文件,编码方式:utf-8
Python2 默认读文件,编码方式:ASCII
这样可能出现乱码,因为Python文件存的时候编码可能不同,所以要指定文件头
在Python文件首行写:(文件头,不是注释)
#coding:gbk
读文件的编码方式
python3的str类型默认存成Unicode,所以不会存在乱码
python2的str类型:
x = u'上'
res = x.encode('gbk') # unicode > gbk 编码
res.decode('gbk') # gbk > unicode 解码