-
起因
使用 org 记录笔记。尝试将原有笔记复制到 org 文件中,然后修改更新。
-
过程
无论从什么应用中复制文本到 emacs 中均显示为乱码。但是通过 wl-paste 工具检查,复制的文本都是 utf-8 编码。
init.el 中设置 (setq selection-coding-system 'gb18030) 和 (setq buffer-file-coding-system 'gb18030) 后,发现:
-
从 onenote 到 emacs,复制文本显示正常。
-
从 vscode/notepad3 到 emacs,则:
- 如果复制文本时,windows 系统的中文输入法处于中文输入状态,则复制文本显示正常。
- 如果复制文本时,windows 系统的中文输入法处于英文输入状态,则复制文本显示为 ascii 的问号。
-
-
细节
- wsl 系统为 debian 12
- emacs 为 bookworm-backports 源里的 emacs-pgtk (30.1)
- windows wsl 版本为 2.5.7.0
-
其他
因为不熟悉 emacs,不确定在 init.el 中的两行设置有没有其他副作用,暂时先用着有其他问题再说。
改成’gbk
试试?另外windows粘贴板是UTF-16LE编码,wsl我不清楚,可能和这个也有关系。
试了下 gbk,问题还是存在。
从 onenote 和 vscode 复制文本的区别是,wl-paste 的输出中 onenote 在两者都有的 text/plain;charset=utf-8 的指示前多了个 text/html 的指示。
应该可以在 yank-transform-functions
加个函数处理一下