Python入门
DAY 07
本篇文章主要讲一下字符编码问题
1.什么是字符编码
字符------编码(字符编码表)------->二进制ASCII:只能表示英文字符,用1Bytes对应一个英文字符
内存:ASCII
硬盘:ASCIIGBK:可以表示中文和英文字符,用1Bytes对应一个英文字符,2Bytes对应一个中文字符
内存:GBK
硬盘:GBKunicode: 可以对应多国字符,统一用2Bytes对应一个字符
目前电脑内存的编码都为unicode两大特点:
1 可以兼容多国字符
2 与多国字符编码都有一种数字与数字的对应关系
GBK数字-----解码decode----->unicode数字
Shift-JIS数字-----解码decode----->unicode数字GBK数字<-----编码encode-----unicode数字
UTF-8数字<-----编码encode-----unicode数字
utf-8:
3Bytes对应一个中文字符
1Bytes对应一个英文字符
2.为什么要有字符编码
因为计算机使用的都是二进制,所以要有一种方法将人类的文字转化成二进制存储,或将二进制转化成人类的文字输出,这就出现了字符编码
3.保证不乱码的关键:
1 字符当初以什么编码的,就应该以什么编码去解码强调:此时计算机只使用unicode与字符的对应关系
在python2中:
1 (执行python程序的第二个阶段)解释器在将test.py当普通的文本文件读入内存时默认使用的编码是ASCII
2 有两种字符串类型:
str:x="上" # 文件头指定的编码格式的二进制
unicode:x=u"上" # 存成unicode格式的二进制ps:pyhon2中unicode就是python3的str类型
在python3中:
1 (执行python程序的第二个阶段)解释器在将test.py当普通的文本文件读入内存时默认使用的编码是UTF-8
2 (执行python程序的第三个阶段,开始识别语法),会字符类型的值开辟一个内存空间存入unicode格式的二进制
即python3中的str类型是unicode编码的二进制3 字符串类型
1 str: x="上" # 存成unicode格式的二进制
4 字节串(等同于二进制)
字节串=str.encode('utf-8')文件头:
在文件首行写上:coding:utf-8
就是在告诉python解释器,不要用其默认的编码,用文件头指定的编码
以上为本次学习内容,如何疑问欢迎指出