Я создал скрипт 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