PEP 263 Python源文件编码

刚开始开发时,Python只支持ascii编码,在Python2.1时Unicode文本只能用 Latin-1编码来绕过Unicode编码,使得对于亚洲国家的开发者来说很不友好;

解决方法是指定每个源文件的编码:在文件的第一行或者第二行用一个特殊的注释来指明文件的编码;注释必须满足如下正则表达式:

^[ \t\v]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)

其中捕获组中的值就是编码,必须是有效的编码,否则将在编译期报错。编码必须是ASCII兼容超集的,如 utf-8,像 utf-16 这种所有字符都是2字节以上的就不行,这是有Python解释器决定的。同时这个注释也用来给编辑器提供编码提示,如:Vim 和 Emacs。如果第一行满足此正则表达式,第二行将被忽略,提供第二行的原因在于第一行被用于指示脚本解释器 #!/usr/bin/python

主流的编码注释:

# coding=utf-8
# -*- coding: utf-8 -*-