Emacs shell模式下,如何正确操作中文文件?

Windows 7 64bit,在Eamcs的shell模式下,中文名的文件都是乱码,这个要怎么解决啊?使用git add的时候也不能正确识别。 试了许多网上的方法也没有效果。

1 个赞

看看 管不管用

(prefer-coding-system 'cp936) ;;默认使用cp936
(setq process-coding-system-alist (cons '("git" . (utf-8 . utf-8)) process-coding-system-alist));;对git 的输入输入的编辑使用utf-8
;; (setq process-coding-system-alist (cons '("grep" . (cp936 . cp936)) process-coding-system-alist));;对git 的输入输入的编辑使用utf-8
(setq process-coding-system-alist (cons '("bash" . (utf-8 . utf-8)) process-coding-system-alist));对bash 的输入输入的编辑使用cp936
(setq process-coding-system-alist (cons '("diff" . (cp936 . cp936)) process-coding-system-alist));对bash 的输入输入的编辑使用cp936
(set-file-name-coding-system 'cp936) ;;文件名的编辑 dired 中会用到
(setq-default buffer-file-coding-system 'utf-8) ;;buffer写文件时使用什么编码
;; 以下两个测试中。
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)

不管用呢,还是显示乱码

我是 macOS 不知道有没有帮助。 你在 Emacs shell 里面通过 locale 看下 LANG= 是什么。 之前因为系统是英文,Emacs shell LANG=就跟随系统英文了。改为 zh_CN.UTF-8 就好了

在命令行下要怎么看啊?怎么改?

找下就有

1 个赞

你直接试试 (setenv "LANG" "zh_CN.UTF-8") 或者 (setenv "LC_ALL "zh_CN.UTF-8")

不管用呢,可能是windows的原因吧。

Windows 下难道不是 zh_CN.GB18030


我不认为是 Windows 的原因,以前在 XP/Vista 下使用 Emacs,印象中没有中文方面的问题。我觉得如果要验证一个问题,最好做一个最小配置,然后把所有操作脚本化。只要把这个脚本贴出来,任何人都能运行/重现问题。

1 个赞

直接无配置运行就可以了,shell mode下中文异常。

抱歉,刚又试了一下,无配置或者配置很少的情况下,shell mode下可以正常显示中文,但是使用git的时候出现乱码,不知道原因。