2012-05-18 64 views
3

我有開頭的Python腳本:emacs的節能Python代碼與#前不斷地問 - * - 編碼:ASCII - * -

#!/usr/bin/env python 
# -*- coding: ASCII -*- 

和保存之前,它總是分裂我的窗口,並要求:

警告(mule):對於當前緩衝區/文件,使用:編碼標記指定無效的編碼系統「ASCII」 。 強烈建議在寫入文件之前修復它。

我需要說是的,它有一種方法來禁用它?對不起,但我沒有在谷歌運氣。

加布裏埃爾

+0

來自[PEP 263](http://www.python.org/dev/peps/pep-0263/)「沒有編碼註釋,Python的解析器將採用ASCII」。所以你根本不需要這個文件。 – Chris

+0

另外,從這個[答](http://stackoverflow.com/a/2387315/623518)你可以使用'#coding:ascii'而不是更詳細的'# - * - coding:ASCII - * - '。這也在PEP 263中提到。 – Chris

+1

@Chris:爲什麼不把它放在答案中? – Thomas

回答

3

Python的增強建議(PEP)263,Defining Python Source Code Encodings,討論了一些定義源碼編碼的方法。兩個特殊點是與此有關:

  • 沒有編碼評論,Python的解析器將承擔ASCII

    所以你不要在你的文件需要這個的。不過,如果你想更明確一些文件編碼:

  • 要定義源代碼的編碼,一個神奇的評論必須放到了源文件既可以作爲文件中第一或第二線,如:

    # coding=<encoding name> 
    

    (注意=可由:代替)。因此,您可以使用# coding: ascii而不是更詳細的# -*- coding: ASCII -*-,如this答案所示。這似乎讓emacs保持高興。

+1

「沒有編碼註釋,Python的解析器將假定爲ASCII」 - 如果你使用的是Python 2.x.如果你想要ascii源代碼,並且你正在使用python 3.x,那麼你確實需要它。 –

7

不涉及改變腳本是告訴Emacs的什麼ASCII意味着作爲編碼系統中的解決方案。 (默認情況下,Emacs的稱之爲US-ASCII代替。)添加到您的.emacs文件:

(define-coding-system-alias 'ascii 'us-ascii) 

然後Emacs的應該能夠理解# -*- coding: ASCII -*-

相關問題