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

Emacs,十六进制编辑器,并确定文本文件为DOS格式,emacs,hex-editors,Emacs,Hex Editors,这是我的问题的简化版本:我有两个文本文件,不同的数据,但相同的第一行,由相同的程序生成,尽管可能在不同的操作系统上。当emacs读取其中一个文件时,它会说它是DOS格式的,而读取另一个文件时,它不会这样做 我使用了几个十六进制编辑器(Bless、GHex、Kubuntu上的OKTeta),在所有这些编辑器上我都看到了相同的东西,即每一行都以两个文件的顺序OD OA(CR LF)结尾,包括最后一行 所以我的问题是:emacs如何确定什么是DOS文件,什么不是,在文件中是否有其他东西是十六进制编辑器

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

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

所以我的问题是:emacs如何确定什么是DOS文件,什么不是,在文件中是否有其他东西是十六进制编辑器不会显示或添加的

两个文件在不同的目录中具有相同的名称。我也遇到了这个问题,因为我有C++代码,它解析字符串,而在Emacs列表中作为DOS文件失败,所以问题实际上是文件内容。p> 最后注意:您将注意到没有C/C++标记。我不想寻找如何修改我的C++代码来处理这种情况的建议。我知道怎么做

谢谢你的帮助


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

什么意思?“它说它是DOS格式的”。您是怎么看的?您是否100%确定,在非DOS文件中,所有出现的CR和LF都在CRLF对内?如果一行偏离,Emacs会将文件视为UNIX以避免数据丢失。@ OLGEPAVLIV:状态行(我相信这就是所谓的,靠近底部,就在你输入命令的上面)将显示,从非常左边开始:-----(DOS)--- MyFrimeNe..…@ USER4151622442我没有查看所有的事件,但是如果是这样的话,我会在每一行包含CRLF对的末尾看到^M字符吗?我确实从emacs中删除了DOS文件的一行末尾,在保存并重新加载后,我看到了这一点。@wvxvw我没有想到这一点。当我有时间的时候,我会写一些代码来测试。因为我可以解决这个问题,所以现在不是优先考虑的问题,但我很好奇,当我发现更多的时候,我会报告。