字符编码抄的 Tumashu 编码配置 https://github.com/tumashu/emacs-helper/blob/master/eh-basic.el。
(set-language-environment "UTF-8")
(set-buffer-file-coding-system 'utf-8-unix)
(set-clipboard-coding-system 'utf-8-unix)
(set-file-name-coding-system 'utf-8-unix)
(set-keyboard-coding-system 'utf-8-unix)
(set-next-selection-coding-system 'utf-8-unix)
(set-selection-coding-system 'utf-8-unix)
(set-terminal-coding-system 'utf-8-unix)
(cond
( (eq system-type 'windows-nt)
(set-language-environment "Chinese-GBK")
(set-file-name-coding-system 'gbk-dos)
(set-selection-coding-system 'gbk-dos)
(set-next-selection-coding-system 'gbk-dos)
(set-clipboard-coding-system 'gbk-dos))
( (eq system-type 'cygwin)
(when (display-graphic-p)
(set-selection-coding-system 'gbk-unix)
(set-next-selection-coding-system 'gbk-unix)
(set-clipboard-coding-system 'gbk-unix) ) )
)
在粘贴系统剪贴板时发现一个现象,如果复制时系统语言是中文(不是输入法中/英状态),回到emacs里粘贴,无论此时再切换为什么语言,文本粘贴一切正常;
但如果复制时系统语言是英文(不是输入法中/英状态),回到emacs里粘贴,无论此时再切换为什么语言,粘贴出来的文本,中文显示问号。
我以为是 (set-language-environment "Chinese-GBK")
这句问题,但注释掉也是一样的现象。该如何解决?求助道友,感谢!
环境:Windows 10原生GNU Emacs 28.2。
试过了,把cond之前的设置都注释掉,还是一样的。
在 Windows 下 Emacs 默认就是用的 GBK 编码,不用这些编码设置。不建议在 Windows 下 设置 (set-language-environment "UTF-8")
注释了也一样的。
而且在Windows下,cond里面设置了Chinese-gbk,会覆盖上面的utf8。
你可以用 M-x describe-current-coding-system
看看当前的编码设置情况
Coding system for inter-client cut and paste:
U -- utf-16le-dos
设置 (set-selection-coding-system 'utf-16le-dos)
试试看
试了,现在inter-client cut and paste的编码是utf-16le-dos了。但表现很诡异。
一直保持系统语言英文,第一次复制,粘贴还是中文问号;但第二次及以后再复制,粘贴出来就正常了。
有时候,第一次复制粘贴也是正常的。
那就不清楚是什么问题了。我这边 Windows 10 用的系统默认的语言和区域设置,Emacs 设置的 utf-8, 目前使用下来没什么问题。
我目前的编码设置只有这些,放在 early-init.el 中:
(set-charset-priority 'unicode)
(prefer-coding-system 'utf-8)
(setq system-time-locale "C")
(when (eq system-type 'windows-nt)
(setq file-name-coding-system 'gbk) ;; 如果用 emacsclient 才要设置这个,不然无法打开中文名字的文件
(add-to-list 'process-coding-system-alist '("sdcv" . (utf-8-dos . chinese-gbk-dos)))
(add-to-list 'process-coding-system-alist '("rg" . (utf-8-dos . gbk))))
可以参考下之前的讨论:
1 个赞