Windows下eshell中文乱码

各位好,

你们遇到过Windows下eshell乱码的问题么? 当我按下C-c 想终止程序的时候,提示是乱码。

Emacs 版本:GNU Emacs 27.0.60 (build 1, x86_64-w64-mingw32)

谢谢!

编码不匹配,你所用的程序输出 GBK:

(decode-coding-string
 "\326\325 \305\372\264\246\300\355\262\331\327\367\302\360(Y/N)?"
 'gbk)
;; => #("终 批处理操作吗(Y/N)?" 0 14 (charset chinese-gbk))

不清楚第二个字是什么,反正应该不是「止」

(encode-coding-string "终止" 'gbk)
;; => "\326\325\326\271"

谢谢!请问你知道怎么给eshell设置编码么?比较奇怪的是,中文目录显示都是正常的,就是终止程序的时候发现不正常,应该还是哪里设置的不对。

把程序输入输出和 Emacs buffer 这三个地方的编码搭配上。先试着把问题的根源找出来,然后再解决。

假设你的 Buffer 编码是 UTF-8,执行 cat file.gbk,当然就会出现「乱码」。或者假设你告诉 Emacs subprocess 输出编码是 GBK,此时 cat file.utf-8,当然也会「乱码」。

这跟你的问题没关系,Eshell 的 ls 不用外部程序,不会出现编码不匹配问题。

谢谢! 有时间再试试看吧,最近比较忙。

在配置中加入: (with-eval-after-load 'eshell (set-language-environment “chinese-GB”) )

1 个赞

可以了!谢谢!但是npm的输出有乱码了:

你还解决了吗,就是npm输出乱码的呢