it-swarm.com.de

Textdatei mit 0D 0D 0A Zeilenumbrüchen

Ein Kunde sendet mir eine CSV-Datei, in der die Zeilenumbrüche aus der Sequenz 0xD 0xD 0xA bestehen. Soweit ich weiß, sind Zeilenumbrüche entweder 0xA von Mac oder Unix oder 0xD 0xA von Windows.

Ist der 0xD 0xD 0xA eine bekannte Kodierung? Gibt es eine bekannte Abfolge von Einsparungen, die die Zeilenenden einer Datei beschädigt, was dies verursacht (ich glaube, der Kunde verwendet einen Mac)?

Die Datei beginnt nicht mit Kodierungsmarkern, sie beginnt direkt mit dem Textinhalt. Der Text wird korrekt angezeigt, wenn er mit der Codepage 1252 geöffnet wird.

26
Anders Abel

Der CRCRLF ist als Ergebnis eines Word-Wrap-Fehlers in Windows XP bekannt.

Zum Nachschlagen finden Sie hier einen Auszug der Relevanz aus dem verlinkten Blog:

Wenn Sie auf Windows-Computern die Eingabetaste drücken, werden tatsächlich zwei Zeichen gespeichert: ein Wagenrücklauf (CR) und ein Zeilenvorschub (LF). Das Betriebssystem interpretiert die Zeichenfolge CR LF immer auf dieselbe Weise wie die Eingabetaste: Es wird in die nächste Zeile verschoben. Wenn jedoch zusätzliche CR- oder LF -Zeichen vorhanden sind, kann dies manchmal zu Problemen führen.

In der Windows-Version XP von Notepad ist ein Fehler aufgetreten, durch den zusätzliche CR-Zeichen im Anzeigefenster gespeichert werden können. Der Fehler tritt in der folgenden Situation auf:

Wenn Sie die Option zum Zeilenumbruch aktiviert haben und das Anzeigefenster lange Zeilen enthält, die umlaufen, führt das Speichern der Datei dazu, dass Notepad die Zeichen CR CR LF an jedem Umbruchpunkt im Anzeigefenster einfügt, jedoch nicht im gespeicherte Datei.

Die CR CR LF - Zeichen können zu Merkwürdigkeiten führen, wenn Sie sie kopieren und in andere Programme einfügen. Sie verhindern auch, dass Notepad die Zeilen ordnungsgemäß umwickelt, wenn Sie die Größe des Notepad-Fensters ändern.

Sie können die CR CR LF -Zeichen entfernen, indem Sie die Funktion "Zeilenumbruch" deaktivieren und gegebenenfalls wieder aktivieren. Der Cursor wird dabei jedoch zu Beginn des Anzeigefensters neu positioniert.

28
BalusC

Netscape-ANSI-codierte Dateien verwenden 0D 0D 0A für ihre Zeilenumbrüche.

5
Joseph Looper

Es ist auch bekannt, dass Apple Mail einen Codierungsfehler für ausgehende Text- und CSV-Anhänge verursacht. Im Wesentlichen werden Zeilenabschlüsse durch weiche Zeilenumbrüche in jeder Zeile ersetzt, die in der Kodierung wie = 0D aussehen. Wenn der Anhang per E-Mail an Outlook gesendet wird, erkennt Outlook die weichen Zeilenumbrüche, entfernt das = und fügt dann echte Zeilenumbrüche hinzu, d. H. 0D0A, sodass am Ende jeder Zeile 0D0D0A (cr cr lf) angezeigt wird. Die Kodierung sollte = 0D = sein, wenn es sich um eine Mac-Formatdatei (oder eine andere Variante von Unix) handelt, oder = 0D0A =, wenn es sich um eine Windows-Formatdatei handelt. 

Wenn Sie E-Mails aus Apple-E-Mails (zumindest in Mavericks oder Yosemite) per E-Mail versenden, ist es eine akzeptable Lösung, den Anhang nicht als Text- oder CSV-Datei zu verwenden. komprimiere es.

Der Fehler ist auch vorhanden, wenn Sie ein Fenster VM unter Parallelen ausführen und eine E-Mail-Datei mit Apple Mail von dort aus per E-Mail versenden. Es ist die E-Mail-Verschlüsselung. Aus vorherigen Kommentaren hier scheint es, als hätte netscape dasselbe Problem.

1
Bruce

Dies ist in der Regel auf einen Fehler im Revisionskontrollsystem oder ähnliches zurückzuführen. Dies war ein Produkt von CVS, wenn eine Datei von Windows auf den Unix-Server eingecheckt und dann wieder ausgecheckt wurde ...

Mit anderen Worten, es ist einfach kaputt ...

1
Johan Kotlinski

Nur zu sagen, das ist auch der Wert (Art von ...), der von PHP zurückgegeben wird auf:

<?php var_dump(urlencode(PHP_EOL)); ?> 
    // Prints: string '%0D%0A' (length=6)-- used in 5.4.24 at least
0
Sam Swift 웃