Linux 如何重置emacs以utf-8-unix字符编码保存文件?
我有个问题。我发现emacs最近停止使用默认字符集“utf-8-unix”保存我的所有新文件。 我不明白我做了什么,但当我打开一个文件时,在迷你缓冲区上方我看到的是“-:-”而不是“-U:--”,其中“U”表示该文件是用utf-8-unix字符集保存的。Linux 如何重置emacs以utf-8-unix字符编码保存文件?,linux,emacs,encoding,utf-8,Linux,Emacs,Encoding,Utf 8,我有个问题。我发现emacs最近停止使用默认字符集“utf-8-unix”保存我的所有新文件。 我不明白我做了什么,但当我打开一个文件时,在迷你缓冲区上方我看到的是“-:-”而不是“-U:--”,其中“U”表示该文件是用utf-8-unix字符集保存的。 如何重置emacs以在正确的编码系统中保存文件?若要恢复所述的旧行为,请尝试添加 (set-language-environment "UTF-8") 到您的.emacs启动文件。以下是我的设置: ;;;;;;;;;;;;;;;;;;;;;;
如何重置emacs以在正确的编码系统中保存文件?若要恢复所述的旧行为,请尝试添加
(set-language-environment "UTF-8")
到您的.emacs
启动文件。以下是我的设置:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ENCODING ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; C-h C RET
;; M-x 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))))
出于某种原因,Windows开始将我的
init.el
文件解释为以UTF-8以外的格式编码,并被诸如“ö”和“§”之类的字符阻塞。解决方案是添加一行;-*-编码:文件开头的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
看一看:我已经尝试了所有这些命令,但仍然得到了“未决定的unix”(“--:--”)编码而不是UTF-8。。。如何解决?您可以将#-STAR-coding:utf-8-STAR-添加到文件的顶部…肯定会起作用…但还必须查看:在何处用替换STARasterisk@MiteshPathak:应为
;-*-编码:utf-8-*-
(也就是说,在行的开头使用Emacs注释标记分号,而不是哈希符号)。我已经尝试过了,但没有成功。我不知道我搞砸了什么。。。但它不起作用。。。还有其他方法吗?用-Q
(--没有初始化文件--没有站点文件--没有启动
)启动emacs会改变什么吗?不,它不会改变任何与缓冲区字符集有关的内容,它只加载emacs而不加载.emacs文件,但事实上,我仍然会遇到编码方面的问题。。。我该怎么办?告诉我们更多关于环境的信息(操作系统/发行版,Emacs版本)。我在Ubuntu 13.04上使用Emacs 23.4,我不知道为什么连这个都不起作用,但是非常感谢你的代码片段,我会试试的!如果您通常处理的文件具有扩展名,请继续添加它们,就像我在示例中所做的那样--文件编码系统列表
。我甚至添加了一个没有扩展名的,例如,user prefs