【问题标题】:A file save via notepadd++ is failing diff comparison on terminal通过记事本++ 保存的文件在终端上的差异比较失败
【发布时间】:2012-05-28 11:05:25
【问题描述】:

我在 Windows 上使用 notepad++ 以 UTF-8 和 ASCII 格式保存了一个文本文件。该文本与 UNIX 版本具有相同的字母表示,但通过 diff 声称完全不同(例如 1,267c1,267)。这些文件在二进制级别上实际上是不同的(xxd -b test.txt),但是 vimdiff 的结果与 vim 不同:它表明它们是相同的。我猜是因为 vimdiff 在对文件进行 diff 之前渲染文本?为什么会出现这种不一致?

【问题讨论】:

  • 这种差异就是我学到的所谓“按照规范工作”。我希望保存为 UTF-8 和 ASCII 的文件会产生差异。 UTF-8 字符是 2 个字节宽,而 ASCII 字符是 1 个字节吗?可能有一个 perl、php 或 python 模块可以处理这个问题,但我没有任何经验可以分享。对不起,祝你好运。

标签: windows unix character-encoding diff notepad++


【解决方案1】:

如果您对diff 使用-b 选项,它将忽略前导和尾随空格,包括行尾字符的差异。如果这不能解决问题,您可以使用 hd (hexdump) 或 od -c(八进制转储,显示 ascii 字符)仔细检查各个文件。

【讨论】:

    【解决方案2】:

    检查您比较的文件中的行尾字符。可能是您在每行末尾使用\r\n 保存了它们,而Unix 版本以\n 终止。

    【讨论】:

    • vimdiff 通过在缓冲区中将 \r\n 表示为 ^M 来检测这种差异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    相关资源
    最近更新 更多