Emacs,十六进制编辑器并确定文本文件是DOS格式

时间:2012-09-30 12:02:30

标签: emacs hex-editors

这是我的问题的简化版本:我有两个文本文件,不同的数据但相同的第一行并由同一程序生成,尽管可能在不同的操作系统上。当emacs读取其中一个时,它表示它是DOS格式,而在读取另一个时则不是。

我在Kubuntu上使用了几个Hex编辑器(Bless,GHex,OKTeta),所有这些都看到了同样的事情,即每行都以两个文件的序列OD OA(CR LF)结束,包括最后一行线。

所以我的问题是:emacs如何确定什么是DOS文件,什么不是,并且文件中还有其他内容,Hex编辑器不会显示或添加?

两个文件在不同的目录中具有相同的名称。此外,我遇到了这个问题,因为我有解析字符串的C ++代码,并且emacs列为DOS的文件失败,所以问题实际上是文件内容。

最后注意:您会注意到没有C / C ++标记。我不是在寻找有关如何修改我的C ++代码来处理这种情况的建议。我知道该怎么做。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

Emacs通过在读取文件时将CRLF转换为LF然后在写出时将LF转换回CRLF来处理DOS文件。因此,如果文件中只有一个LF,即使缓冲区未被修改,读取和写入也会最终添加CR。出于这个原因,如果文件中间隐藏着这样一个单独的LF,Emacs将处理该文件而不是DOS,而是UNIX文件。