it-swarm.com.de

Erinnerung - \ r \ n oder \ n \ r?

Ich kann mich einfach nicht daran erinnern. Also, was ist der richtige Weg, um altmodische ASCII Zeilen richtig zu terminieren?

368

Ich würde das Wort 'r etur n' verwenden, um mich daran zu erinnern, dass das r vor dem n steht.

1018

Wenn Sie C # verwenden, sollten Sie Environment.NewLine verwenden. Dies entspricht MSDN:

Eine Zeichenfolge mit "\ r\n" für Nicht-Unix-Plattformen oder eine Zeichenfolge mit "\ n" für Unix-Plattformen.

52
BrunoLM

Neue Zeile hängt von Ihrem Betriebssystem ab:

DOS & Windows: \r\n 0D0A (hex), 13,10 (decimal)
Unix & Mac OS X: \n, 0A, 10
Macintosh (OS 9): \r, 0D, 13

Weitere Details hier: https://ccrma.stanford.edu/~craig/utility/flip/

Verwenden Sie im Zweifelsfall einen Freeware-Hex-Viewer/-Editor, um zu sehen, wie eine Datei ihre neue Zeile codiert.

Für mich benutze ich folgende Anleitung, um mich zu erinnern: 0D0A =\r\n = CR, LF = ca rr iage r eturn, li n e feed

34
Sun

Die Sequenz lautet CR (Wagenrücklauf) - LF (Zeilenvorschub). Erinnern Sie sich an Nadeldrucker? Genau. Also - die richtige Reihenfolge ist\r\n

20
Otávio Décio

In jeder .NET-Sprache wäre Environment.NewLine vorzuziehen.

8
Esteban Araya

Gehen Sie dabei vorsichtig von Hand vor.
Tatsächlich würde ich raten nicht dies überhaupt zu tun.

In Wirklichkeit handelt es sich um die plattformspezifische Leitungsabschlusssequenz LTS.

Wenn Sie eine Datei im Textmodus öffnen (dh nicht im Binärmodus), konvertieren die Streams das "\ n" in das richtige LTS für Ihre Plattform. Konvertieren Sie dann die LTS zurück zu "\ n", wenn Sie die Datei lesen.

Als Ergebnis, wenn Sie "\ r\n" in eine Windows-Datei drucken, erhalten Sie die Sequenz "\ r\r\n" in der physischen Datei (schauen Sie mit einem Hex-Editor nach).

Das ist natürlich ein echtes Problem beim Übertragen von Dateien zwischen Plattformen.

Wenn Sie nun in einen Netzwerk-Stream schreiben, würde ich dies manuell tun (wie die meisten Netzwerk-Protokolle dies speziell nennen). Aber ich würde sicherstellen, dass der Stream keine Interpretation durchführt (daher wäre der Binärmodus angemessen).

5
Martin York

\r\n für Windows reicht völlig aus.

4
Brad

Aus Wikipedia (Sie können in diesem Artikel nachlesen, welches für Ihr Betriebssystem richtig ist):

Systeme, die auf ASCII oder einem kompatiblen Zeichensatz basieren, verwenden entweder LF (Zeilenvorschub, '\ n', 0x0A, 10 in Dezimal) oder CR (Wagenrücklauf, '\ r', 0x0D, 13 in Dezimal) einzeln oder CR gefolgt von LF (CR + LF, '\ r\n', 0x0D0A).

4
bhamby

\r\n

Seltsamerweise erinnere ich mich daran, weil es das Gegenteil der Schreibmaschine ist, die ich verwendet habe .
Nun, wenn es normal wäre, hätte ich mich nicht daran erinnern müssen ... :-)

typewriter from wikipedia *Bild aus Wikipedia

Wenn Sie mit der Eingabe der Zeile fertig sind, verwenden Sie in der Schreibmaschine den Wagenrücklaufhebel , der die Trommel zum Rollen bringt, die neue Zeile . , und danach können Sie den Wagenrücklauf manuell betätigen .

Sie können von dieser Aufzeichnung von freesound.org das Geräusch des Papiereinzugs zu Beginn und etwa -1: 03 Sekunden nach dem Ende nach der Glockenwarnung für das Ende der Linie hören der Trommel, die rollt, und nach dem Wagenrücklauf.

3
Hastur

wenn Sie C # verwenden, warum nicht Environment.NewLine? (Ich nehme an, Sie verwenden einige File-Writer-Objekte. Übergeben Sie ihm einfach den Environment.NewLine und er behandelt die richtigen Abschlusszeichen.

2
NirMH