day07字符编码复习:
1. 字符编码:字符编码就是字符与数字的对应关系表
计算机要想工作必须通电,即用‘电’驱使计算机干活,也就是说‘电’的特性决定了计算机的特性。
电的特性即高低电平(人类从逻辑上将二进制数1对应高电平,二进制数0对应低电平),
关于磁盘的磁特性也是同样的道理。结论:计算机只认识数字
很明显,我们平时在使用计算机时,用的都是人类能读懂的字符
(用高级语言编程的结果也无非是在文件内写了一堆字符),如何能让计算机读懂人类的字符?
必须经过一个过程:
#字符--------(翻译过程)------->数字
#这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码
ASCII:只能识别英文字符,1Bytes=1英文字符
GBK:可以识别中文字符与英文字符串,2Bytes=1中文字符 1Bytes=1英文字符
Unicode
1. 能够兼容万国字符
2. 与其他任意编码的二进制数都有映射关系
unicode格式------编码encode------->GBK格式的二进制数
GBK格式的二进制数-------解码decode------->unicode格式
UTF-8:unicode的转换格式,3Bytes=1中文字符 1Bytes=1英文字符
2. 在python中字符编码的应用:
1. 保证执行python程序的前两个阶段不乱码,加文件头
在文件的首行写入: #coding:文件存的时候用的编码
2. 字符串类型演变:
python2有两种"字符串"相关类型:
种类一:#coding:gbk,x='上' # '上'存成了GBK编码后的二进制
种类二:x=u'上' # '上'存成了unicode编码后的二进制
python3有两种"字符串"相关类型
x='上' # '上'存成了unicode编码后的二进制
res=x.encode('gbk') #gbk格式的二进制
3. 总结:
1. 保证不乱码的核心法则:以什么编码存的就应该以什么编码取
2. 在python2中定义字符串,应该加上前缀u,比如x=u'你好'
3. 在编写python文件时,必须加文件头:#coding:文件存的时候用的编码
英文字节 中文字节
unicode 2 2
utf-8 1 3
gbk 1 2
ascii 1