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