Python,Emacs和编码

我在使用Emacs Python 2.7.1编码时遇到麻烦.根据PEP 0263,Python使用与emacs相同的源编码声明.

当我使用以下编码标记启动Python源代码脚本时,没有问题:

#!/usr/bin/python
# -*- mode=python; encoding:us-ascii -*-

但是,当我在我的编码中添加行尾模式时,例如:

#!/usr/bin/python
# -*- mode=python; encoding:us-ascii-unix -*-

Emacs仍然接受我的编码信息,但是执行脚本时,我从Python中收到以下错误:

File "./unicode.py", line 2
SyntaxError: encoding problem: with BOM

有没有办法告诉Emacs我要使用的行尾,并同时告诉Python源文件编码?

解决方法:

您可以编写两个块:一个仅由解释器解析,而另一个仅由Emacs解析:

#!/usr/bin/python
# coding: us-ascii

print "Hello World"    

# Local Variables:
# mode: python
# coding: us-ascii-unix
# End:

请注意,(1)us-ascii是Python 2.x中的默认设置; (2)Emacs通常能够自动确定行尾约定;因此您可能无需声明就可以相处.

上一篇:在Windows的Emacs中运行Python


下一篇:我如何在Emacs中的定界符内设置语法颜色?