Windows Notepad 和 Notepad++ 在同一个文件中以不同的方式显示换行符

Windows Notepad 和 Notepad++ 在同一个文件中以不同的方式显示换行符

我创建了一个 Perl 脚本,它获取一些数据并将其逐行插入到文本文件中。当我使用 Notepad++ 打开该文件时,每两行文本之间似乎有一个空行分隔符,例如:

AAVX    Etracs Daily Short 1 Month S&P

ABCS    Guggenheim Abc High Dividend Et

ABI     Safety First Trust

但是,如果我使用标准 Windows 记事本打开同一个文件,则文件上不会出现空格,如下所示:

AAVX    Etracs Daily Short 1 Month S&P
ABCS    Guggenheim Abc High Dividend Et
ABI     Safety First Trust

问题是:我应该信任哪一个记事本,以及为什么会发生这种情况?

答案1

发生这种情况时停产控制字符不正确。Windows 使用carriage return+表示换行符line feed

在 Notepad++ 中,您可以通过选择来检查这些字符:

看法>显示符号>[x] Show End of Line

记事本++

您需要修改脚本,以便您的数据格式如下:

回车换行符

答案2

设置

Edit > EOL Conversion

有效果吗?尝试将其切换到 UNIX。

答案3

除了常规的 Windows EOL 之外,还有一个非 Windows EOL 字符CrLf。 Notepad++ 可以理解所有各种 EOL 字符并将它们全部显示出来。 Windows Notepad 不那么智能,会跳过非 Windows EOL 字符。

我不懂 Perl,但当我遇到这种情况时,几乎总是因为我发送的字符串末尾有非 Windows EOL 字符。测试字符串中最后一个字符的 Asc 字符代码值,如果是 ,则删除它carriage return

VBA 中的示例

If Asc(Right(sName, 1)) = 13 Then
   sName = Left(sName, Len(sName) - 1)
End If

相关内容