字符编码:人类的语言 翻译(编码)二进制
保存不是目的,取出来才是目的
想要保存翻译的结果,必须采用相同的规范,也就是字符编码
ascII 一个字符占一个字节
GBK 中文使用两个字节,英文使用一个字节
Unicode 支持任何国家的语言,两个字节存储任意符号,(是优点也是缺点)
要求速度高的情况下,选择Unicode,存储在硬盘
utf-8 可以将其看作是Unicode的升级版,一个英文占一个字节,中文占3个字节
utf——8使用场景:
1.当我们需要将数据基于网络进行发送时,则必须将数据转换为二进制,GBK,UTF-8都可以,但是由于UTF-8兼容好并且节省空间,所以推荐使用UTF-8
2.存储在硬盘
乱码发生的两种情况:
1.存的时候使用的编码与取的时候不同
2.存的时候,出现了编码表中不存在的字符,例如既有英文,又有中文,但是采取了Ascll
如何保证不乱码:
1.存取一致
2.使用兼容万国的编码表
指定字符编码:
# coding:utf-8
解释器在读取py文件后需要识别语法,当在定义字符串变量时,又涉及到编码问题
py2中默认使用asc,也可以使用coding来指点,但也有乱码的可能
p3中默认就是Unicode,coding在p3中只能修改解码的过程,无法修改定义变量时的过程
encode将Unicode——翻译——某种指定格式的二进制如utf-8,例如:把文本写入硬盘,把文本发入网络
decode 将某种指点格式的二进制如utf-8--翻译成Unicode