7

我正在使用 diff 命令来比较两个文本文件。他们需要从字面上匹配。

所以我使用差异:

diff binary.out binary.expected

(顺便说一下,这些文件不是二进制文件。它们是文本文件。我称它们为二进制,因为这是项目的名称)

并得到

Binary files binary.out and binary.expected differ

当我使用另一个差异工具时,最聪明的(又名人类),这两个文件之间真的没有什么不同。

有谁碰巧知道这里发生了什么?

谢谢。

4

2 回答 2

7

diff来自diffutils的关于文本/二进制的内容如下:

diff通过检查文件中的前几个字节来确定文件是文本还是二进制文件;确切的字节数取决于系统,但通常为数千。如果文件该部分中的每个字节都不为空,则diff认为该文件是文本;否则它认为该文件是二进制文件。

因此 GNU diff 对什么是文本有一个非常开放的定义,并且--text很少需要使用该选项来强制它将文件视为文本。

您是否检查过是否binary.outbinary.expected包含空字符?你的差异程序是什么版本?

于 2012-04-25T22:23:15.240 回答
3

确保忽略差异选项中的空白。

它还可以看到 Unicode 字符并将其解释为二进制。查看您的差异工具是否有强制文本模式的选项。

于 2012-04-25T04:39:52.217 回答