目录python
什么是字符编码编辑器
将人类的字符编码成计算机能识别的数字,这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系。编码
最先的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系。可是这种编码只有使用英语的国家才可使用。可是处理数据时,各个国家有各个国家的语言,因此各个国家都给本身的语言编写以一套字符编码。因此中国人规定了本身的标准gb2312编码,规定了包含中文在内的字符与数字的对应关系;日本人规定了本身的Shift_JIS编码;韩国人规定了本身的Euc-kr编码……code
此刻的各类标准都只是规定了本身国家的文字在内的字符跟数字的对应关系,若是单纯采用一种国家的编码格式,那么其他国家语言的文字在解析时就会出现乱码。因此能包含全世界的语言Unicode编码迫切应运而生。orm
此后Unicode编码方式成为世界标准。可是用Unicode会比ascii耗费多一倍的空间,在存储和传输上十分的低效。因此又出现了把Unicode编码转化为“可变长编码”的UTF-8编码(Unicode Transformation Format-8)。内存
因为UTF-8只是简化了代码的存储,它并不能与其余国家硬盘中的代码进行关系转换,所以内存中必须使用Unicode的编码,UTF-8的代码没法进行该操做。utf-8
内存中还使用Unicode编码,是由于历史遗留问题形成的,可是由于如今写代码使用的都是UTF-8代码,因此之后内存中的代码都将变成UTF-8代码,而且之前遗留的各个国家的代码都将被淘汰,因此将来内存中使用的编码也将使用UTF-8编码替代Unicode编码。ci
python解释器至关于文本编辑器,把代码读入python解释器(python2默认是ASCII,python3默认UTF-8)unicode
例如it
中文 # gbk编码的中文加
识别代码,检查 python 语法
# coding:gbk # 告诉python解释器用gbk去完成第一步,读入字符 中文
产生结果,在终端进行显示(电脑是什么编码,就按照什么编码方式显示)
代码出了编码错误,首先加 coding:utf-8
终端的特性:电脑是什么编码方式,就按照什么编码方式显示信息。
python2有两种存储变量的形式
Unicode
按照coding头
假设python2用utf8存储 x='中文'
,当 print(x)
的时候,终端接收gbk的变量x,可是Windows终端编码是UTF-8,会乱码
假设python2用Unicode存储,终端接收的是Unicode,Windows终端编码是能够是任意编码方式,因此确定不会乱码
# coding:gbk lt1 = '中文' # utf存储的 # lt1 = ['中文'] # []让他不用终端的编码转化,显示01010101001 print lt1 # ['\xe4\xb8\xad\xe6\x96\x87'] lt2 = u'中文' # u'中文'让他变成Unicode # 早期用python2定义中文,必须得加上u,让他变成Unicode存储 # lt2 = [u'中文'] print lt2 # '中文'
python3只有一种存储变量的形式:Unicode
python3用unicode存储,终端接收的是Unicode,Windows终端编码是能够是任意编码方式,因此确定不会乱码
lt1 = '中文' # == u'中文' print(lt1)