【问题标题】:Inconsistent line endings warning when line endings are consistent行尾一致时行尾不一致警告
【发布时间】:2011-09-23 17:52:25
【问题描述】:

我在 Visual Studio 中打开一个自动生成的文件来检查它,Visual Studio 告诉我行尾不一致。我知道 LF 和 CRLF 之间的区别,所以我想我会尝试对生成代码进行一些小改动,以根据平台使用正确的换行符。

我告诉 Visual Studio 不要更改它,然后关闭文件。我用 Python 打开它,用这个 sn-p 代码查看每一行。

with open(filename, 'r') as f:
    # uses %r so it prints the non-formatted string (so I can see \r and \n)
    print '\n'.join(('%r' % x for x in f.xreadlines()))

我看了一下输出,每一行(除了最后一行)都以'\r\n'结尾。最后一行没有换行符,所以它只包含文本。

我也用 Emacs 打开文件,它不会自动检测到使用 DOS 模式,并在每一行显示 ^M 字符。

当我看到每一行都使用相同的行尾时,为什么文件的行尾“不一致”?

【问题讨论】:

  • 在尝试签入 VS 写入的文件时,我一直遇到此错误。我通常的解决方案是在 Notepad++ 中打开文件,将行尾更改为 Unix 并返回到 DOS。

标签: visual-studio line-endings


【解决方案1】:

(回答我自己的问题,但也许将来会对其他人有所帮助)

行尾并非“不一致”,但它们也无效。稍微看一下 hexdump,我在文件中发现了以下 CRLF 应该在的位置。

0d 0d 0a

当文件被写出时,它必须已经写了两次或可能写了\r字符,使用了文字\r\n,并且无论写出文件什么都将\n字符自动更改为\r\n

【讨论】:

    猜你喜欢
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多