Beyond Compare(简称BC) 是一款功能强大的文件比较工具,平时的代码合并时经常使用这个工具进行。在一次代码比较的过程中发现了这样的现象:虽然source文件的内容相同,但是BC显示两文件有差异(如下图所示):



----

我们注意到这两个文件的编码和文件大小不同,但是文本内容却是一模一样的。那么原因是什么呢?到底该怎样比较这样的source文件呢?

首先来解释下为什么内容相同但是文件大小不同的问题,这个问题的根本原因就是不同操作系统下回车(Carriage Return -- CR)换行(Line Feed -- LF)的处理不同:
    Windows用CR+LF 来表示一行的结束;
    unix 、Mac OS X 用LF来表示一行的结束;
    Mac OS 至 Mac OS9用CR来表示一行的结束。
    提示:更多信息请参考 new line
也就是说同样的多行文字,在windows下存储表示的文本文件就要比其他操作系统(如 Linux,Mac)下的文件大,大多少呢?文件有多少行就大多少字节。
就拿上面的例子来说,文件一共有9行,因此Windows下的文件就要比Linux下的文件大9字节。

知道了原因,我们应该怎样使用BC来比较这样来自不同操作系统的文件呢?

BC下有这样三种比较的规则:
1. CRC
2. 二进制
3. 基于规则
下面这样的一篇文章很好地解释了这样的问题 Files are the Same, but Beyond Compare Says They are Different
通过这样的两部设置就可以来比较这样的文档:
1. 找到会话 --> 会话设置

2. 在"比较"标签下选择"基于规则的比较"