Windows 通过notepadd++;终端上的差异比较是否失败
我在windows上使用notepad++以UTF-8和ASCII格式保存了一个文本文件。该文本与UNIX版本具有相同的字母表示形式,diff声称该文本完全不同(例如1267C1267)。这些文件在二进制级别(xxd-betest.txt)上实际上是不同的,但是vimdiff的结果与vim不同:它显示它们是相同的。我猜是因为vimdiff在对文件执行diff之前呈现文本?为什么会有这种不一致性?检查比较文件中的行尾字符。可能是您在每行末尾使用Windows 通过notepadd++;终端上的差异比较是否失败,windows,unix,character-encoding,diff,notepad++,Windows,Unix,Character Encoding,Diff,Notepad++,我在windows上使用notepad++以UTF-8和ASCII格式保存了一个文本文件。该文本与UNIX版本具有相同的字母表示形式,diff声称该文本完全不同(例如1267C1267)。这些文件在二进制级别(xxd-betest.txt)上实际上是不同的,但是vimdiff的结果与vim不同:它显示它们是相同的。我猜是因为vimdiff在对文件执行diff之前呈现文本?为什么会有这种不一致性?检查比较文件中的行尾字符。可能是您在每行末尾使用\r\n保存了它们,而Unix版本则以\n终止。如果您
\r\n
保存了它们,而Unix版本则以\n
终止。如果您使用-b
选项进行-diff
,它将忽略前导和尾随空格,包括行尾字符的差异。如果这不能解决问题,您可以使用hd
(hextump)或od-c
(八进制转储,显示ascii字符)对单个文件进行更仔细的检查。这一差异就是我所学的所谓“按照规范工作”。我希望保存为UTF-8和ASCII的文件会产生差异。UTF-8字符的宽度不是2字节,而ASCII字符的宽度不是1字节吗?可能有perl、php或python模块可以处理这个问题,但我没有任何经验可以分享。抱歉,Good luck.vimdiff通过在缓冲区上指示^M来检测这些差异。