Mit Notepad gespeicherte Dokumente haben Zeilenumbrüche gelöscht
400
BunnyKnitter
Eine sehr seltsame Situation tritt auf:
(Unter Windows 7 Enterprise, SP1, 64-Bit)
Eine GUI, die ich bei der Arbeit verwende (speziell für diesen Zweck erstellt und in einer Windows-Umgebung ausgeführt werden soll), generiert DAT-Dateien. Ich muss etwas bearbeiten, bevor ich es benutze. Ich öffne es in einem einfachen alten Notizblock, mache meine Bearbeitung und speichere es ab (alles sieht gut aus). Wenn ich es mit einem beliebigen Programm (Notepad, Notepad ++, etc) erneut löse, wurden alle "neuen Zeilen" / "Eintritte" / Zeilenumbrüche entfernt - alles scheint als eine lange Zeile zusammengefügt zu sein.
Wenn ich es einfach öffne und es ohne Speichern in Notepad schließe, ändert sich nichts und die Zeilenumbrüche sind dort, wo sie sein sollten. Das Öffnen des Dokuments in Notepad ++ oder einem anderen Programm und das Speichern haben keine Auswirkungen auf die Zeilenumbrüche. Das Kopieren des Inhalts nach Notepad ++ und zurück in den Notepad behebt dieses Problem ebenfalls - nachfolgende Sicherungsvorgänge in Notepad bremsen die Linebreaks nicht.
Was dieses Problem noch schwieriger macht, ist, dass dieses Verhalten nicht für ALLE DAT-Dateien gilt, die von meiner GUI erzeugt werden. Nur einige davon.
Gibt es gute Ideen, was passiert und wie man es beheben kann?
Wenn die Lösung darin besteht, die Art und Weise zu ändern, wie meine GUI die Dateien erzeugt, ist dies eine akzeptable Antwort, da die GUI etwas ist, für das ich einen Fehlerbericht einreichen kann.
Es scheint jedoch unwahrscheinlich, da ich glaube, dass mein Chef dieses Problem noch nie hatte und er die gleiche Version der GUI und des Notepad verwendet, um geringfügige Änderungen an den Dateien vorzunehmen. Ich habe dies auch erst kürzlich und uneinheitlich geschehen lassen: Eine Datei, die zuvor dieses Problem hatte, verliert NICHT ihre Zeilenumbrüche, wenn sie mit Notepad in dieser aktuellen Iteration von Dateien gespeichert wird.
Edit: more info: Ich habe die Datei an meinen Chef geschickt und habe ihn mit Notepad auf seinem Computer geöffnet und gespeichert, und es ist nichts Komisches passiert - alle Zeilenumbrüche blieben nach dem Speichern, Schließen und erneutem Öffnen. Entweder hat der Vorgang des Versendens etwas in der Datei behoben oder es ist etwas komisch mit meinem Computer.
Betrachten Sie das Hex der gespeicherten und nicht gespeicherten Dateien: Soweit ich das beurteilen kann, hat die nicht gespeicherte Version 0D0A zwischen den Zeilen und der gespeicherten Version fehlen alle Instanzen von 0D0A, mit Ausnahme einer einzelnen Instanz ganz am Ende (ich frage mich, ob dies der Fall war von Notepad ++ hinzugefügt, da die Datei geöffnet / konvertiert wurde).
Erneut bearbeiten: Die Hex-Version der "nicht gespeicherten" Datei nach dem Bearbeiten der vertraulichen Informationen:
Einige Hintergründe können helfen. Notepad erfordert, dass eine Datei beides enthält <CR><LF>, um festzustellen, dass es sich um eine Zeilenende und um einen Zeilenumbruch handelt. Wenn eines dieser Zeichen fehlt, werden diese übersprungen und alles in einer einzigen Zeile angezeigt. <CR><LF>ist die Standardsequenz für Zeilenumbrüche auf DOS / Windows-Computern, während Unix / Linux und Derivate <LF>als Zeilenumbruch verwendet werden. Die Datei, die Sie öffnen, hat höchstwahrscheinlich nur eine Datei, daher kann <LF>sie vom Editor nicht richtig angezeigt werden.
Diese Dateien wurden höchstwahrscheinlich von einem Programm erstellt, das nicht den Windows / DOS-Konventionen für die Textformatierung folgt. Wenn dies nur für die Ausführung unter Windows gedacht ist, denke ich, dass ein Fehlerbericht in Ordnung ist, insbesondere wenn die Dateien in Notepad bearbeitet werden sollen.
In der Zwischenzeit empfehle ich, die Dateien nur in Notepad ++ zu öffnen und zu bearbeiten.
Wenn Sie das Problem debuggen möchten, laden Sie einen Hex-Editor herunter, um zu sehen, was sich am Ende einer Zeile befindet. Für eine korrekte Fensterformatierung sollte es Hex-Codes 0d 0a enthalten. Wenn entweder fehlt oder in einer anderen Reihenfolge, entsteht ein Problem. Versuchen Sie dies mit einer neuen Datei, die noch nie aus dem Notizblock gespeichert wurde und die noch nicht gespeichert wurde.
Windows ist die einzige Plattform, auf der es je lief. Ich habe schlechte Kodierung in Betracht gezogen, aber die Inkonsistenz stört mich. Ich habe vor einigen Wochen denselben Satz von Dateien erstellt, und "File1.dat" hatte dieses Problem. Jetzt habe ich heute mehr Dateien generiert, und "File2.dat" hat dieses Problem, aber "File1.dat" nicht. In dieser Zeit ist keine Aktualisierung meiner GUI erfolgt. Ich benutze denselben Computer.
BunnyKnitter vor 7 Jahren
0
Auch wenn es ein Problem mit der Kodierung gibt, zeigt es nicht das Fehlen von Zeilenumbrüchen von Anfang an? Das Öffnen der Datei funktioniert anfangs gut. Das Speichern in Notepad scheint die Zeilenumbrüche durcheinander zu bringen.
BunnyKnitter vor 7 Jahren
0
Dem ursprünglichen Beitrag wurden einige Debug-Informationen hinzugefügt
RayG vor 7 Jahren
0
Soweit ich das beurteilen kann, hat die ungespeicherte Version 0d 0a zwischen den Zeilen und die gespeicherte Version fehlt sowohl 0d als auch 0a. (Verwenden Sie einen Online-Hex-Editor und fügen Sie meinen Text ein. Ich kann keine zufälligen Programme auf meinem Arbeitscomputer installieren.)
BunnyKnitter vor 7 Jahren
0
Ohne die Datei in einem Hex-Editor anzuzeigen, können Sie nicht sicher sein. Die gesamte Datei muss ordnungsgemäß formatiert werden. Wenn auch nur eine Zeile falsch ist, kann der Editor etwas Seltsames tun. Wenn Sie die Datei auf einen anderen Computer bringen können, den Sie im Hex-Format anzeigen können, wäre dies hilfreich.
RayG vor 7 Jahren
0
Oh. Notepad ++ kann in Hex konvertiert werden. Erneut geprüft: In der gespeicherten Version fehlen alle Instanzen von "0D0A", mit Ausnahme einer einzelnen Instanz am Ende der Datei. Die ungespeicherte Version hat viele Fälle von 0D0A, die vermutlich jedem Zeilenumbruch entsprechen.
BunnyKnitter vor 7 Jahren
0
Wie groß ist die Originaldatei?
RayG vor 7 Jahren
0
nur ein paar kb. Es ist eine kleine Textdatei. Ich könnte wahrscheinlich alle sensiblen Daten bearbeiten, aber ... Ich weiß nicht, wie ich sie dann speichern würde, um eine "nicht gespeicherte" Version zu senden.
BunnyKnitter vor 7 Jahren
0
@SnyperBunny Wenn der Inhalt der Datei auf einen Bildschirm in der Hex-Ansicht passt, können Sie möglicherweise nur die vertraulichen Informationen bearbeiten und dann einen Screenshot der Hex-Ansicht erstellen, ohne zu speichern. Führen Sie dies für eine frisch erstellte DAT-Datei aus, sodass bekannt ist, dass sie sich von den von Ihnen vorgenommenen Änderungen nicht ändert.
RayG vor 7 Jahren
0
Ich fügte den Hex-Code zum Hauptfrage-Post hinzu.
BunnyKnitter vor 7 Jahren
0
Dieses Muster kann ein Problem verursachen: 0D0D0A
RayG vor 7 Jahren
0
Ich glaube, das 0d0d0a-Muster ist das Problem und Notepad entfernt sie. Zwei '`in einer Reihe macht keinen Sinn, es ist redundant und entspricht nicht dem Windows-Standard. Beachten Sie, dass es ein richtiges `gibt`am Ende nach dem Speichern. Dies ist ein Beweis dafür, dass Notepad den gesamten Originaltext als eine lange Zeile sieht und die Steuerzeichen überspringt und entfernt, wie Sie es in Ihrem ursprünglichen Beitrag beschrieben haben. Sie müssen das Programm, das Text generiert, mit zwei CR in einer Reihe beheben.
RayG vor 7 Jahren
1
@SnyperBunny Wenn Sie Zugriff auf den Code haben, suchen Sie nach Zeichenfolgen, die folgendermaßen aussehen: `" Dies ist eine Textzeile \ r "` Der umgekehrte Schrägstrich r ist nicht erforderlich.
RayG vor 7 Jahren
0
Ich habe leider keinen Zugriff auf den Code, der die Dateien generiert. Was ich nicht verstehen kann, ist, warum dieses Problem inkonsistent ist. Warum sollte diese Datei diesmal beschädigt werden, während zuvor eine andere Datei beschädigt wurde und "normal" ist dies kein Problem mit generierten Dateien.
BunnyKnitter vor 7 Jahren
0
@SnyperBunny Ich kann diese Frage nicht beantworten, ohne den Code zu sehen, der die Dateien generiert. Einige Programme können inkonsistent sein, wenn sie einer Datei Zeilen hinzufügen. Notepad gibt keine schlecht formatierten Zeilen aus, während die anderen Editoren damit umgehen können. Leider habe ich zu diesem Thema nicht alles zu bieten.
RayG vor 7 Jahren
0