emacs 中的汉字 --no-window-system on windows

Chinese characters in emacs --no-window-system on windows

我最近开始在 Termux 的 Android 上使用 emacs。我的项目有一些汉字,在那里显示得很好。

稍后在 Windows 上用 Emacs 打开同一个文件时,我很失望地看到它们显示为 \xxxx

我不确定如何寻找解决方案,因为我不知道问题是什么。

我发现的唯一与我的问题相关的是:

Unicode characters in emacs term-mode

但这并没有帮助我解决问题。

您可以通过查看模式行中的前几个字符来判断发生了什么。在 Termux 中,它表示 UUU,但在 Windows 中它表示 DDU。这三个字符代表:

  1. 键盘输入的编码系统
  2. 终端输出的编码系统
  3. 缓冲区中文件的编码系统

U代表UTF-8,而D代表各种DOS代码页。 (您可以使用 M-x list-coding-systems 找到它。这在 the Mode Line section of the Emacs manual 中都有描述。)

所以这意味着 Emacs 正在正确读取文件,但它认为终端无法显示汉字,所以它使用 \uxxxx 符号作为后备。我不确定如何让它在 Windows 终端中正常工作,但尝试 M-x set-terminal-coding-systemutf-8 - 它可能会工作。


顺便说一句,如果你 运行 Emacs 作为 "normal" Windows 应用程序而不是在终端中,字符应该自动正确显示,所以如果有特殊问题阻止你这样做,可能值得尝试解决这个问题。