搜索或转换八进制序列

时间:2012-11-25 20:44:04

标签: emacs elisp

我使用pdftk解压缩了一个PDF文件,我正在尝试使用regexp在Emacs中编辑它。

问题是这个文件有重音字符,Emacs将它们显示为八进制序列:例如\340代表à。要编辑此文件,我有两种可能性(至少我认为是这样)。

a)应用一种编码,使Emacs显示实际的重音字符,而不是八进制等效字符。 Vim已正确显示重音字符;

b)使用regexp搜索八进制序列。

至于a),我试过(set-buffer-file-coding-system'utf-8-dos),(set-buffer-file-coding-system'utf-8-unix),(set- buffer-file-coding-system'raw-text)没有成功。

对于b),在应用set-buffer-file-coding-system之后,我能够使用C-q ... RET增量搜索八进制序列,但是我无法做到我真正需要的东西:替换字符串。实际上C-q ... RET在使用M-%C-M-%时与八进制序列不匹配。 C-x 8 `...也不起作用。

提前致谢。 安东尼奥

2 个答案:

答案 0 :(得分:1)

在访问PDF文件的缓冲区中尝试以下键序列:

  

C-x RET r 字符编码 RET

这将使用您指定的字符编码重新访问该文件。

或者,如果要在访问文件之前指定要使用的字符编码,则可以执行

  

C-x RET c 字符编码 RET

在输入之前 C-x C-f

有关详细信息,请参阅documentation

答案 1 :(得分:0)

@Stefan

实际上我并没有谈到保存方面的差异,而是在展示。

在这两种情况下,关闭和重新打开文件会使文件保持原样,没有明显的变化。 至于显示,(set-buffer-file-coding-system 'windows-1252-unix)模式行从(Unix) ---变为(Unix) **-,表示代码系统没有发生变化,实际上缓冲区中的字符是相同的(八进制序列是还在那儿)。

使用(revert-buffer-with-coding-system'windows-1252-unix)时,模式行从(Unix) ---更改为* (Unix) ---,表示代码系统已更改为{{1} },根据windows-12**助记符,实际上八进制序列与其等效的重音字符一起显示。

如果我将M-x list-coding-systems应用于其他缓冲区,例如临时,后者会从(set-buffer-file-coding-system 'windows-1252-unix)更改为1\--。因此,对于此缓冲区是从* (Unix) **latin-1-dos的实际广告变更。

这可能是一个连贯的设计,我不知道。

安东尼奥