如何重置emacs以utf-8-unix字符编码保存文件?

我有个问题。 我发现emacs最近停止了用默认字符集“ utf-8-unix ”保存所有的新文件。 我不明白我做了什么,但是当我打开一个文件,在小缓冲区上方,我看到“ – :—”而不是“ -U:— ”,其中“U”表示文件用utf-8-unix字符集保存。 如何重置emacs来保存文件在适当的编码系统?

这是我的设置:

 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ENCODING ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Ch C RET ;; Mx describe-current-coding-system (add-to-list 'file-coding-system-alist '("\\.tex" . utf-8-unix) ) (add-to-list 'file-coding-system-alist '("\\.txt" . utf-8-unix) ) (add-to-list 'file-coding-system-alist '("\\.el" . utf-8-unix) ) (add-to-list 'file-coding-system-alist '("\\.scratch" . utf-8-unix) ) (add-to-list 'file-coding-system-alist '("user_prefs" . utf-8-unix) ) (add-to-list 'process-coding-system-alist '("\\.txt" . utf-8-unix) ) (add-to-list 'network-coding-system-alist '("\\.txt" . utf-8-unix) ) (prefer-coding-system 'utf-8-unix) (set-default-coding-systems 'utf-8-unix) (set-terminal-coding-system 'utf-8-unix) (set-keyboard-coding-system 'utf-8-unix) (set-selection-coding-system 'utf-8-unix) (setq-default buffer-file-coding-system 'utf-8-unix) ;; Treat clipboard input as UTF-8 string first; compound text next, etc. (setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING)) ;; mnemonic for utf-8 is "U", which is defined in the mule.el (setq eol-mnemonic-dos ":CRLF") (setq eol-mnemonic-mac ":CR") (setq eol-mnemonic-undecided ":?") (setq eol-mnemonic-unix ":LF") (defalias 'read-buffer-file-coding-system 'lawlist-read-buffer-file-coding-system) (defun lawlist-read-buffer-file-coding-system () (let* ((bcss (find-coding-systems-region (point-min) (point-max))) (css-table (unless (equal bcss '(undecided)) (append '("dos" "unix" "mac") (delq nil (mapcar (lambda (cs) (if (memq (coding-system-base cs) bcss) (symbol-name cs))) coding-system-list))))) (combined-table (if css-table (completion-table-in-turn css-table coding-system-alist) coding-system-alist)) (auto-cs (unless find-file-literally (save-excursion (save-restriction (widen) (goto-char (point-min)) (funcall set-auto-coding-function (or buffer-file-name "") (buffer-size)))))) (preferred 'utf-8-unix) (default 'utf-8-unix) (completion-ignore-case t) (completion-pcm--delim-wild-regex ; Let "u8" complete to "utf-8". (concat completion-pcm--delim-wild-regex "\\|\\([[:alpha:]]\\)[[:digit:]]")) (cs (completing-read (format "Coding system for saving file (default %s): " default) combined-table nil t nil 'coding-system-history (if default (symbol-name default))))) (unless (zerop (length cs)) (intern cs)))) 

为了找回描述的旧行为,请尝试添加

 (set-language-environment "UTF-8") 

到您的.emacs启动文件。

出于某种原因,Windows开始将我的init.el文件解释为以UTF-8以外的方式进行编码,并在诸如“ö”和“§”之类的字符上窒息。 解决办法是增加一行; -*- coding: utf-8 -*- ; -*- coding: utf-8 -*-在文件的开头。

为了确保在每种情况下都使用UTF-8,我在init.el有以下几行:

 ;; Use UTF-8 for all character encoding. (set-language-environment 'utf-8) (set-default-coding-systems 'utf-8) (set-selection-coding-system 'utf-8) (set-locale-environment "en.UTF-8") (prefer-coding-system 'utf-8) (setq utf-translate-cjk-mode nil) ; disable CJK coding/encoding