当我从Windows复制非ascii文本并将其粘贴到Emacs时,它显示为八进制序列。例如,如果我将ä粘贴到Emacs中,它将显示为\ 344。
我可以键入Cq 344将ä返回Emacs。这很烦人,但只有一个字符是可以忍受的。但是,如果有许多字符转换为八进制转义序列,则在区域上运行某些命令以转换内部的所有内容将很方便。已经有这样的命令了吗?如果没有,您将如何编写函数来实现?
[我在.emacs文件中将默认编码系统设置为utf-8,并且在Windows和Linux上使用相同的.emacs文件。但是,仅当从Windows应用程序复制到Emacs时才会发生问题。从Emacs复制到另一个Windows应用程序效果很好。]
或者,甚至
—
wvxvw 2014年
set-clipboard-coding-system
。尝试C-h a coding-system
查看该组中还有哪些其他功能。
您看到的\ 344是配置问题的结果。而不是在事实发生后对其进行“修复”的命令,您应该研究为什么首先获得它。例如,从开始,
—
Stefan 2014年
emacs -Q
如果您已经看到问题了,M-x report-emacs-bug
。
@Stefan有时,“为什么要得到它”很明显,但这并不能帮助您在事后解决它。例如,我刚遇到这个问题是因为
—
T. Verron 2014年
insert-file-literally
(并且现在撤消或删除/重新插入文件为时已晚)。
@Stefan在Emacs之外可能存在太多错误配置,可能导致这种情况,仅举几例:某人将BOM表保存到最初以cp-12XX单字节编码的文件中,这混淆了复制文本的源代码编辑器,源代码编辑器错误地报告了剪贴板中内容的类型等。在编辑一些最初被错误编码的古老的ASP源代码时,我经常看到这一点。
—
wvxvw 2014年
revert-buffer-with-coding-system
(请参阅文档)。Emacs以这种方式显示字符是因为您是从不同编码系统中的环境中复制它们的(假设ANSI具有所谓的高ASCII字符,用于用变音符号呈现拉丁语),但是您的缓冲区必须使用类似UTF-8的字符(对于设置高位的ASCII字符没有意义,即无效)。