讨论一下 Emacs 中的 UTF-8 编码设置

@mezi @aqua0210 两位大哥好,由于我是内网环境,而且不能插u盘,只能拍照片说明了。 新执行的emacs -q,执行的设置就是图一中的,图二是dired界面,按:e会报错,中文文件名会已乱码的形式显示,所以才让gpg抛出了错误,请大哥们看看这怎么办😣

你系统文件名已经是 UTF-8 了

UTF-8 的 “你好” 用 gbk 解码就是 “浣犲ソ”

不知道作用的配置不要乱抄

可是我是用win7的文件管理器新建的文件啊,那该如何设置呢

不用设置就能成功,如果不设置还是不行,把 gbk 改成 utf-8

还是不行,file-name-coding-system改成utf-8也是不行

  1. file-name-coding-system 这个变量在 Windows 上改了没用,文档说了 Emacs 根本不看这个变量的

  2. 后面的 add-to-list 重新启动 emacs 再设置

  3. 默认的设置出什么问题,截图发下

抱歉,内网禁u盘系统,只能拍照片凑合看看了

以上都是关闭emacs进程后,重新打开的emacs -q,其实很单纯的操作,就是在dired里面用epa加密而已。 我在linux环境下从没遇到这种问题,最近是想在单位电脑设置emacs环境,结果发现一堆问题,包括不限于rg之类的中文搜索问题,造成无法快速搜索文本资料的情况,不过这个先不管了。我再试试上面几个朋友的设置。

我一般都这样设置

  (set-default 'process-coding-system-alist
               '(
                 ("[pP][lL][iI][nN][kK]" utf-8-dos . gbk-dos)
                 ("[cC][mM][dD][pP][rR][oO][xX][yY]" utf-8-dos . gbk-dos)
                 )))
  (add-to-list 'process-coding-system-alist '("firefox.exe" utf-8 . gbk))

遗憾 我把firefox.exe改成了gpg.exe,还是不行。难道是gpg4win自身的问题?

你这不还是 gbk 么?完全一样的图

我误会了,我重新开了emacs -q,如下图,其实还是一样的

(add-to-list 'process-coding-system-alist '("firefox.exe" utf-8 . gbk))

这个process-coding-system-alist值要根据你程序自身去判断,绝大部情况编码是 utf-8 . gbk。 我试过有些程序设置成gbk-dos . gbk-dos才行,可以试试。

(set-default 'process-coding-system-alist
               '(
                 ("[pP][lL][iI][nN][kK]" gbk-dos . gbk-dos)
                 ("[cC][mM][dD][pP][rR][oO][xX][yY]" gbk-dos . gbk-dos)
                 ))

你可以试试,将它默认设置成gbk-dos . gbk-dos,看看行不行。

sorry

会不会是别的地方的问题?

有没可能是你调用的那个函数里,已经设置了编码?

他文件系统已经是 UTF-8 了,问题是传给 gpg 的是 gbk 反而是错误的

(setq default-process-coding-system '(utf-8 . utf-8))

这样有没有作用?

还是不行。

换了另一台win10的,开了utf-8后就都没问题了,但是我想在工作电脑win7上设置,唉,有没有像玩三国志那种编码转换软件

还是和老板建议吧操作系统升级吧. Windows 7安全更新都没了.

我最近在Windows eshell下 也遇到了编码问题,非常奇怪。
比如写一个只有 fmt.Println(“你好”) 的 go 程序,文件编码设置了 utf-8,只有在 eshell 中运行这个程序时会显示“浣犲ソ”,cat 这个文件时显示是“你好”。其他所有包括 cmd,powershell 等打印出来都是“你好”。甚至 shell-command 跑出来也是“你好”。难道 eshell 运行的程序要额外设置 coding-system ?


确实需要,试了一下

(setq-local coding-system-for-read 'utf-8)

eshell 下就正常了。