我在使用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通常能够自动确定行尾约定;因此您可能无需声明就可以相处.