Windows Notepad und Notepad++ zeigen Zeilenumbrüche in derselben Datei unterschiedlich an

Windows Notepad und Notepad++ zeigen Zeilenumbrüche in derselben Datei unterschiedlich an

Ich habe ein Perl-Skript erstellt, das Daten abruft und diese Zeile für Zeile in eine Textdatei einfügt. Wenn ich diese Datei mit Notepad++ öffne, scheint zwischen jeweils zwei Textzeilen eine leere Zeile zu stehen, zum Beispiel:

AAVX    Etracs Daily Short 1 Month S&P

ABCS    Guggenheim Abc High Dividend Et

ABI     Safety First Trust

Wenn ich jedoch dieselbe Datei mit dem Standard-Windows-Editor öffne, wird sie ohne die Leerzeichen wie folgt angezeigt:

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

Die Frage ist: Welchem ​​Notizblock kann ich vertrauen und warum passiert das?

Antwort1

Dies geschieht, wenn dieEnde der BetriebszeitSteuerzeichen sind nicht korrekt. Windows stellt Zeilenumbrüche mit carriage return+ dar line feed.

In Notepad++ können Sie nach diesen Zeichen suchen, indem Sie Folgendes auswählen:

Sicht>Symbole anzeigen>[x] Show End of Line

Notizblock++

Sie müssen Ihr Skript ändern, damit Ihre Daten wie folgt formatiert sind:

CRLF

Antwort2

Ist die Einstellung

Edit > EOL Conversion

Hat das irgendeine Wirkung? Versuchen Sie, es auf UNIX umzustellen.

Antwort3

Sie haben zusätzlich zum regulären Windows-EOL ein Nicht-Windows-EOL-Zeichen CrLf. Notepad++ versteht alle verschiedenen EOL-Zeichen und zeigt sie alle an. Windows Notepad ist nicht so intelligent und überspringt die Nicht-Windows-EOL-Zeichen.

Ich kenne mich mit Perl nicht aus, aber wenn mir das passiert, liegt es fast immer daran, dass der String, den ich sende, am Ende das nicht von Windows unterstützte EOL-Zeichen hat. Testen Sie den Asc-Zeichencodewert des letzten Zeichens in Ihrem String und entfernen Sie ihn, wenn es ein ist carriage return.

Beispiel in VBA

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

verwandte Informationen