2012-03-01 51 views
3

我在使用Emacs + Python 2.7.1 + Encoding時遇到了問題。根據PEP 0263,Python使用與emacs相同的源編碼聲明。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關於源文件編碼?

回答

3

你可以寫兩大塊:一個是由解釋只有解析,一個是隻有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通常能夠自動確定行結束約定;所以你或許可以在沒有任何聲明的情況下相處。

+0

感謝您的出色答案。一些我爲什麼想要這樣的評論:我在Python中遇到了一些非ascii字符的問題,所以我強迫Emacs只使用us-ascii-unix。只有這樣,我發現Python也具有編碼定義的這個很酷的特性(並且我有一些麻煩發現Python不能處理-unix後綴)。 – EPSG31468 2012-03-03 20:52:37