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
。这三个字符代表:
- 键盘输入的编码系统
- 终端输出的编码系统
- 缓冲区中文件的编码系统
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-system
和 utf-8
- 它可能会工作。
顺便说一句,如果你 运行 Emacs 作为 "normal" Windows 应用程序而不是在终端中,字符应该自动正确显示,所以如果有特殊问题阻止你这样做,可能值得尝试解决这个问题。
我最近开始在 Termux 的 Android 上使用 emacs。我的项目有一些汉字,在那里显示得很好。
稍后在 Windows 上用 Emacs 打开同一个文件时,我很失望地看到它们显示为 \xxxx
我不确定如何寻找解决方案,因为我不知道问题是什么。
我发现的唯一与我的问题相关的是:
Unicode characters in emacs term-mode
但这并没有帮助我解决问题。
您可以通过查看模式行中的前几个字符来判断发生了什么。在 Termux 中,它表示 UUU
,但在 Windows 中它表示 DDU
。这三个字符代表:
- 键盘输入的编码系统
- 终端输出的编码系统
- 缓冲区中文件的编码系统
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-system
和 utf-8
- 它可能会工作。
顺便说一句,如果你 运行 Emacs 作为 "normal" Windows 应用程序而不是在终端中,字符应该自动正确显示,所以如果有特殊问题阻止你这样做,可能值得尝试解决这个问题。