2

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

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

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

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

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

谢谢你的帮助

一个

4

1 回答 1

1

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

于 2012-10-01T02:09:51.377 回答