[Emacs]终端下(如gdb)的调试信息中文不能显示

虽然在编辑的时候能输入中文,但gdb或终端调试的时候中文不能显示,像这样

chdir () at ../sysdeps/unix/syscall-template.S:78
78	../sysdeps/unix/syscall-template.S: 没有那个文件或目录.


有什么解决方案吗??

我猜是你终端默认使用了中文编码(GB18030),而Emacs里使用的是UTF8;试着修改一下终端的lang变量,看看能不能解决这个问题吧

怎么在配置文件 下修改??

假如你用zsh,就到.zshrc下修改;倘若是bash,就到.bash_profile

➜  books git:(master) ✗ echo $LANG
zh_CN.UTF-8

我觉得是其他原因吧

那估计是你Emacs配置的原因?

导出的中文是GB18030的格式,但buffer是按UTF8显示的,所以中文会乱码,你试试M-x revert-buffer-with-coding(大概是这个名字,电脑不在身边记不清是啥,快捷键是C-x RET r),把gbd buffer的编码改成GB18030的格式,看看中文是不是显示正常了?

嗯???

啊这,试试C-x RET t呢?

你看到的 3 byte 为一个汉字是 UTF-8 编码,也就是你的终端没有使用 UTF-8 编码,Emacs 下用 M-x describe-current-coding-system 查看当前 Buffer 的编码,貌似如此,我也不是100%清楚。

(decode-coding-string (unibyte-string #o346 #o262 #o241
                                      #o346 #o234 #o211
                                      #o351 #o202 #o243
                                      #o344 #o270 #o252
                                      #o346 #o226 #o207
                                      #o344 #o273 #o266
                                      #o346 #o210 #o226
                                      #o347 #o233 #o256
                                      #o345 #o275 #o225)
                      'utf-8)
;; => "没有那个文件或目录"

Try setting gdb-mi-decode-strings to utf-8.

Reference:


是这样吗?? 好像都是utf-8

这个好像可以诶 :kissing_closed_eyes: