2023年windows下的正确编码设置

和coding-system相关的设置非常多,包括在论坛里搜了下也出来很多,都不知道用哪一个好

(set-language-environment "UTF-8")
(set-default-coding-systems 'utf-8)
(set-keyboard-coding-system 'utf-8-unix)
(set-terminal-coding-system 'utf-8-unix)
(prefer-coding-system 'utf-8-unix)
process-coding-system

我的环境是2023-7-7最新git仓库编译的emacs。

下面是我测试后的结论

  1. 默认情况下加这一句就行,不管是shell,还是eshell,还是shell-command命令,都能正常地处理编码,如果执行coreutils的程序出现乱码,在命令开头加上powershell即可
(set-default-coding-systems 'utf-8)
  1. 实际用下来发现会存在一个问题,就是emacs会自动把某些utf-8的文件以gbk打开,造成乱码,每次都要用revert-buffer-with-coding-system重新设置编码,于是需要加下面这行
(set-language-environment "UTF-8")
  1. 但是如果使用了set-language-environment会导致shell这类执行外部程序的命令乱码,这就需要下面的命令,重新把cmdproxy的编码改回来
(modify-coding-system-alist 'process "[cC][mM][dD][pP][rR][oO][xX][yY]" '(chinese-gbk-dos . chinese-gbk-dos))
4 个赞

我只设置

(set-default-coding-systems 'utf-8)

org-protocol+org-protocol-capture-html,网页捕获会乱码。之前用mpvi包也是。 得开启windows beta unicode utf-8 才能正常。

饶是如此,denote back link minibuffer也得用universal-coding-system-argument强制转换一道utf-8才能显示正常

1 个赞

噢,我不用orgmode所以没遇到这个问题,看来我这个正确编码的说法不具有代表性

我是新手,用doom emacs,如何emacs -Q 确定问题我不太会查,我看看哪天有空配个mini.el看看到底是哪的问题。如果查出,我会贴在这里。

我更新了一下内容,老哥设置这三句看看还会乱码不

多谢~org-protocol 及denote backlink minibuffer问题依旧。

但shell eshell的确在不开启beta unicode utf-8的情况下不乱码。 :+1:

这个编码问题……或许我下一台电脑应该整台Mac :joy:

macOS 很烂。建议直接 Linux。

1 个赞

也在考虑中,但看到新版qq,我想等等张小龙到底会不会开发linux原生wechat。如果要那我直接换linux也不错。