2013-08-18 39 views
0

我會盡可能清楚地說明這一點,因爲我自己不太清楚發生了什麼。如果我有一個在Emacs中打開的緩衝區,比如UTF-8(可以是任何其他的),並且我粘貼了另一種編碼的文本(例如PDF),Emacs將更改原始編碼(UTF8),以新的編碼...強制Emacs不改變編碼

這是一個痛苦的屁股,因爲它搞砸了成千上萬的其他文本行,只是這樣的新生產線可正確顯示...

所以我想我的問題是,我怎麼能告訴Emacs永遠不會改變文件的編碼?如果一個角色在現在的編碼中不能表現出來,那就不要顯示出來(或者像平時一樣把它全部搞砸)。

感謝

+1

我認爲你可以選擇下一個操作的編碼方式,就是這樣一個操作。我認爲它的關鍵是......'C-x C-m c'。 – 2013-08-18 15:43:01

+0

如果您使用-Q選項運行emacs(即忽略您所做的任何自定義),是否會發生這種情況? – JSON

+0

編碼不被改變。在編輯緩衝區時,Emacs不會注意編碼,但只有在將其內容讀取/寫入磁盤(或將其發送到另一個程序時)時纔會考慮編碼。您可能希望通過'Mx report-emacs-bug'報告問題,同時小心提供儘可能多的數據(例如,找出Emacs是否發出關於編碼系統變化的消息,找出哪些其他編碼系統被使用,或者更好,但提供可重現的配方)。 – Stefan

回答

2

在文件的頂部指定-*- coding: utf-8 -*-(或任何你想要的編碼),將迫使該編碼特定文件。相關的手冊頁面是here

對於更系統的方法,您可能需要調查file-coding-system-alist變量的文檔字符串,該變量強制基於文件名的編碼。

+0

將file-coding-system-alist設置爲「不轉換」將保存在Emacs的內部編碼中。 – JSON

+0

哎呀,我想我說得太快了(應該先測試一下)。爲正確性編輯。 – shosti

+0

@JSON:'不轉換'並不意味着存儲在Emacs的編碼中。它最多隻是一個用詞不當(沒有「沒有轉換」的東西)。只是不要使用它。如果你想使用Emacs的內部編碼,那麼使用'emacs-internal'(不管怎麼說,使用它可能是個壞主意)。 – Stefan