[ZZ]Python的编码注释# -*- coding:utf-8 -*-

若是要在python2的py文件里面写中文,则必需要添加一行声明文件编码的注释,不然python2会默认使用ASCII编码。
 
# -*- coding:utf-8 -*-

问题就来了,为何要如此声明? html

首先请参考python的PEP http://www.python.org/dev/peps/pep-0263/ python

概要以下 正则表达式

1.必须将编码注释放在第一行或者第二行 vim

2.可选格式有  编辑器

# coding=<encoding name>
#!/usr/bin/python
# -*- coding: <encoding name> -*-
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :

可是再往下看,发现其实只要注释里面有coding 和对应的编码就能够了,例如
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :

因此搞了半天对最标准的作法也有点糊涂了。

后来想了想,看了下VIM中对python的语法高亮文件,里面把以下的正则表达式肯定为编码声明 编码

\%^.*\(\n.*\)\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$

对于这个正则有些有点看不懂,可是大体以下必须有coding:[编码]或者coding=[编码]才行,这个应该能够视做为标准的声明方式吧。

可是为何一般这种方式呢? spa

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

答案在PEP-0263里面有所说起,那就是Emacs等编辑器使用这种方式进行编码声明。

话说PEP里面不少东西都是很值得参考的毕竟能够知道为何程序这样设计。 .net


相关参考 设计

PEP-0263 unix

http://www.python.org/dev/peps/pep-0263/

vim语法文件编写总结

http://www.cnblogs.com/kohpoll/archive/2012/08/04/2623483.html

# -*- coding: UTF-8 -*- 这是个注释吗?

http://bbs.chinaunix.net/thread-590066-1-1.html

相关文章
相关标签/搜索