我应该在Emacs中使用哪种编码系统?

27

我刚试图保存一个带有一些关于如何使用emacs的网站和提示的简单*.rtf文件,但是出现了以下提示:

在尝试对缓冲区“notes.rtf”中的文本进行编码时,这些默认编码系统被尝试使用:(iso-latin-1-dos (315 . 8216) (338 . 8217) (1514 . 8220) (1525 . 8221))。 然而,它们每个都遇到了无法编码的字符: iso-latin-1-dos无法编码这些字符:“‘’“ ”
....
等等

那是什么?现在它要求我选择编码系统

选择编码系统(默认为chinese-iso-8bit):

我甚至不知道什么是编码系统,而且我不想每次尝试保存文档时都要选择一个编码系统... 有没有办法可以设置一个适用于所有文件的编码系统,这样我就不必担心这个问题了?

我在这个网站的另一个问题和答案中看到了其他地方的解释(请在此查看),如果我输入以下内容,则似乎可以让Emacs执行此操作

(defun set-coding-system()(setq buffer-file-coding-system'utf-8-unix))(add-hook'find-file-hook'set-coding-system)

但我不确定... 有人能证实一下吗?


5
在Emacs中没有简单的事情,这是第一课。 - harpo
6
哈,我明白了。当我告诉博士班协调员我正在尝试学习Emacs时,他说:Emacs是一个人生选择。我同意了,并且说如果我要做一个人生选择,那么现在没有比现在更好的时机了。但是,事情确实很难。就在昨天,我在系里找到了一个使用Emacs的人,但不幸的是,我不能期望他(或任何人)花几个小时来帮我解决问题。这个网站对我帮助很大 :) 希望有一天我也能像别人帮助我一样帮助别人! - Vivi
3
同意,我为你鼓掌。我之所以能发表这番言论,是因为我刚做出了同样的人生选择。但我也即将成为一位父亲,所以我们会看到哪个更优先。 Translated: 同意,我为你鼓掌。我之所以能发表这番言论,是因为我刚做出了同样的人生选择。但我也即将成为一位父亲,所以我们会看到哪个更优先。 - harpo
2
一个孩子:那确实是一个人生选择!祝你和你的孕肚宝贝一切顺利 :) - Vivi
3个回答

35

下面是一组相当全面的命令,可以让Emacs默认在任何情况下都使用UTF-8编码:

  (setq utf-translate-cjk-mode nil) ; disable CJK coding/encoding (Chinese/Japanese/Korean characters)
  (set-language-environment 'utf-8)
  (set-keyboard-coding-system 'utf-8-mac) ; For old Carbon emacs on OS X only
  (setq locale-coding-system 'utf-8)
  (set-default-coding-systems 'utf-8)
  (set-terminal-coding-system 'utf-8)
  (set-selection-coding-system
    (if (eq system-type 'windows-nt)
        'utf-16-le  ;; https://rufflewind.com/2014-07-20/pasting-unicode-in-emacs-on-windows
      'utf-8))
  (prefer-coding-system 'utf-8)

10
在Windows平台上,最好避免使用(set-selection-coding-system 'utf-8),因为它会改变Emacs中的剪贴板行为。在Windows上,selection-coding-system(也称为clipboard-coding-system)的正确值应该是'utf-16-le(默认值),以便让Emacs与其他Unicode程序协作。 - Rufflewind
在Linux虚拟机中运行emacs并从Windows复制文本,除非函数(两行)将导致文本显示为中文...如果您将set-selection-coding-system保留为nil,则Emacs将尝试根据剪贴板上的内容解释数据,我认为这通常更好。 - AdamC

8

您应该使用UTF8;它可以处理您所需的所有字符


如果我在我的.emacs文件中加入以下代码:(defun set-coding-system () (setq buffer-file-coding-system 'utf-8-unix)) (add-hook 'find-file-hook 'set-coding-system)那么我的问题会得到解决吗?谢谢! - Vivi
我现在甚至无法设置编码系统。当我尝试回答关于编码系统的问题时,它会显示:“文本只读”:( 我从未感到如此电脑文盲。 - Vivi
好的,我找到了一个好答案: 问:如何在emacs中永久选择编码系统以进行打开和保存? 答:选择菜单“选项‣Mule(多语言环境)‣设置语言环境”。之后,请务必拉出菜单“选项‣保存选项”以将设置保存在您的emacs init文件中。太棒了!谢谢。 - Vivi

0

如果需要补充Vivi在SLacks的回答中提到的“如何在emacs中永久选择编码系统以进行打开和保存”的问题,这里有一种方法可以永久选择编码系统并仅适用于一个文件:

在文件的顶部写入-*- 编码系统名称 -*-,其中您必须指定“编码系统名称”。

您可以通过键入M-x list-coding-systems <RET>来查找编码系统的名称。键入C-h C 编码系统名称 <RET>可以获取有关编码系统的信息。

当然,我在这里提到的所有内容都在Emacs手册中有解释。

请注意,您可以以相同的方式设置特定文件的模式,只需在文件顶部放置-*- 模式名称 -*-即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接