5

Я создал 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

Вопрос в том, какому из блокнотов мне доверять и почему это происходит?

3 ответа3

11

Это происходит, когда управляющие символы EOL неверны. Окна представляют новые строки с carriage return + line feed .

В Notepad++ вы можете проверить наличие этих символов, выбрав:

Вид > Показать символы > [x] Show End of Line

Notepad ++

Вам нужно изменить скрипт, чтобы ваши данные были отформатированы следующим образом:

CRLF

4

Есть ли настройка

Edit > EOL Conversion

Есть какой-нибудь эффект? Попробуйте переключить его на UNIX.

2

У вас есть не-Windows EOL персонаж в дополнение к обычному Windows EOL CrLf . Notepad++ понимает все различные символы EOL и отображает их все. Блокнот Windows не такой умный и пропускает не-Windows символы EOL.

Я не знаю Perl, но когда это происходит со мной, это почти всегда, потому что строка, которую я отправляю, имеет символ EOL, отличный от Windows, в конце. Проверьте значение кода символа Asc последнего символа в вашей строке и удалите его, если это carriage return .

Пример в VBA

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .