magit commit中文乱码

环境windows 11+doom emacs
之前为了避免乱码问题,我在config.el中设置了utf-8之类的参数
设置了 magit-git-output-coding-system

(when (fboundp 'set-charset-priority) (set-charset-priority 'unicode))
(setq magit-git-output-coding-system 'utf-8-unix)

(if (eq system-type 'windows-nt)
    (progn
      (set-clipboard-coding-system 'utf-16-le)
      (set-selection-coding-system 'utf-16-le))
  (set-selection-coding-system 'utf-8))
(prefer-coding-system 'utf-8-unix)
(set-language-environment "UTF-8")
(set-default-coding-systems 'utf-8-unix)
(set-terminal-coding-system 'utf-8-unix)
(set-keyboard-coding-system 'utf-8-unix)

但是打开magit之后还是这个样子 image

此时使用revert-buffer-with-coding-system设置 选择utf-8-unix之后,内容就正常了.

请问大家有遇到吗?这个是什么原因?应当如何解决? 目前没搜到什么有用的信息. 非常感谢

把编码设置都去掉试试

这个刚才尝试了一下,把上边的都注释掉,重启emacs 乱码效果一致,没有变化

在 cmd 里面运行 git log 会乱码吗

cmd的git log是正常的

chcp 65001 把 cmd 的编码改成 utf8 看一下 git log 的输出还正不正确

正常来讲 magit 不做任何配置也不会出现编码错误的

问题依旧,我也很奇怪,到底什么原因导致的这个问题

我的EMACS是通过chocolatey安装的. git是手动安装的

用emacs -Q 只装magit排查一下是不是doom的问题吧

谢谢,我研究一下. 最近忙着改论文. 可能没时间折腾它了

没研究明白怎么在emacs -Q的情况下加载magit。 但是最近我在wsl1里边安装了debian,然后重新安装了doom emacs,现在magit就正常了。也不知道是不是windows的坑。放弃了。暂时用wsl1,而且响应速度也快点儿了。

我原来也发过一贴问的好像也是这个问题 magit 按c c提交时COMMIT_EDITMSG中输入中文就乱码有什么办法吗(win7)

emacs -q启动后在默认buffer中输入类似这样(load-file "~/.emacs.d/elpa/magit-20210916.1754/magit-autoloads.el")c-x c-e执行加载magit

遇到了同样的问题,发现是下面这行设置导致的:

(add-to-list 'process-coding-system-alist '("es" gbk . gbk))

这个设置的本意是想将 es.exe 进程改成 gbk 编码,但是 magit 在执行 git 时使用的全路径,即 magit-git-executable

我的 git 安装在 C:\Program Files\path\to\git.exe , 这里面有个 es 匹配上了,就导致将 git 的输入输出当成 gbk 处理,去掉上面的配置就正常了

2 个赞

最近也是用这个process-coding-system-alist来配置es,fd等等的配置, 后来加上了git,单独配置了编码,好像就可以了。 但是真没注意到您说的这个核心原因。 感谢