python入门储备知识
2.字符编码
PS:编码问题最让程序员头疼! python2中文档头必须添加# -- coding:utf8 -- ,因为py2默认asci ,python3中不需要,py3解释器是以unioncode编码进行语法分析(py3默认utf-8 解释器再转换成unicode)
注意 :windows系统中文版默认编码是GBK,Mac OS \ Linux 系统默认编码是UTF-8
常见的字符编码介绍
- Unicode:国际标准字符集,也称之为万国码,至少由16位表示(两个字节)
- UTF-8:[汉字3个字节]对Unicode的压缩和优化,将所有的字符和符号进行分类,能用多少位表示就用多少位表示,ascii用一个字节表示,UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节:欧洲的用两个,东亚的用3个字节表示(很生僻的字符才会被编码成4-6个字节。)
- GBK:[汉字两个字节],中国人指定的标准
- GB2312:中国指定的对于汉字比较全面的标准。(了解)
编码转换(注意,有坑!直接将utf8装换成gbk,惨了,回退(Ctrl+z)不回来了,无法撤回)
文件存取编码转换图
Python3的执行过程
- 解释器找到代码文件,把代码字符串按文件头定义的编码方式加载到内存,转成unicode(python程序进行系统调用读取其他文件是用的系统默认的编码方式,比如win为GBK,读取文件的时候可以指定编码方式)
- 按照语法规则解释代码。
- 所有的变量字符都会以unicode编码声明
ps:py3中值允许显示unicode编码的字符串,其他编码的字符串不给你显示,只显示对应的十六进制!
ps:decode---解码;encode---编码
常见编码错误排错思路
- python解释器默认的编码-utf-8
- python源文件文件编码
- Terminal使用的编码
- 操作系统的语言设置(特别是win!关键的命名最好全搞成英文,比如主机名!!!路径盘符等!!!否则会有一大堆坑!!!)