我创建了一个 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