Ich möchte den Unterschied (wenn möglich mit Beispielen) zwischen CR LF (Windows), LF (Unix) und CR (Macintosh) Zeilenumbruchstypen kennen.
line-breaks
eozzy
quelle
quelle
\n
wird normalerweise durch einen Zeilenvorschub dargestellt, ist jedoch nicht unbedingt ein Zeilenvorschub.\r
und\n
sind Abstraktionen, die in bestimmten Programmiersprachen verwendet werden. Das Schließen dieser Frage beschönigt grundlegende Unterschiede zwischen den Fragen und verewigt Fehlinformationen.\n
bedeutet nicht in allen Programmiersprachen dasselbe.Antworten:
Es geht wirklich nur darum, welche Bytes in einer Datei gespeichert sind.
CR
ist ein Bytecode für den Wagenrücklauf (aus den Tagen der Schreibmaschinen) und inLF
ähnlicher Weise für den Zeilenvorschub. Es bezieht sich nur auf die Bytes, die als Zeilenende-Marker platziert werden.Viel mehr Informationen, wie immer, auf Wikipedia .
quelle
CR
der Fluchtcharakter\r
undLF
der Fluchtcharakter ist\n
. Außerdem Wikipedia: Newline .CR and LF
ist nur das Ende der Zeile und die neue Zeile gemäß diesem Link , ist das richtig?CR und LF sind Steuerzeichen, die jeweils codiert
0x0D
(13 Dezimalstellen) bzw.0x0A
(10 Dezimalstellen) sind.Sie werden verwendet, um einen Zeilenumbruch in einer Textdatei zu markieren. Wie Sie angegeben haben, verwendet Windows die CR LF-Sequenz mit zwei Zeichen. Unix verwendet nur LF und das alte MacOS (Pre-OSX MacIntosh) verwendet CR.
Eine apokryphe historische Perspektive:
Wie von Peter angegeben , CR = Carriage Return und LF = Line Feed , haben zwei Ausdrücke ihre Wurzeln in den alten Schreibmaschinen / TTY. LF bewegte das Papier nach oben (behielt aber die horizontale Position bei) und CR brachte den "Wagen" zurück, so dass sich das nächste eingegebene Zeichen an der Position ganz links auf dem Papier befand (aber in derselben Zeile). CR + LF hat beides getan, dh sich darauf vorbereitet, eine neue Zeile einzugeben. Da die physische Semantik der Codes im Laufe der Zeit nicht anwendbar war und Speicherplatz und Diskettenspeicher knapp waren, entschieden sich einige Betriebssystementwickler, nur eines der Zeichen zu verwenden, sie kommunizierten einfach nicht sehr gut miteinander. -)
Die meisten modernen Texteditoren und textorientierten Anwendungen bieten Optionen / Einstellungen usw., mit denen die Zeilenende-Konvention der Datei automatisch erkannt und entsprechend angezeigt werden kann.
quelle
CR and LF
ist nur das Ende der Zeile und die neue Zeile gemäß diesem Link , ist das richtig?CR+LF
) auf anderen Systemen mit doppelten Zeilenumbrüchen angezeigt werden können. Vermutlich unterstützt der Editor, der den Text anzeigt, sowohl Wagenrücklauf als auch Zeilenvorschub als Zeilenumbruchbegrenzer und kann daher 2 Zeilen erstellen, in denen 1 beabsichtigt war. Während alsoCR+LF
könnte das sein am meisten kompatibel, ich glaube nicht , es ohne Problem.Dies ist eine gute Zusammenfassung, die ich gefunden habe:
Das Carriage Return (CR) -Zeichen (
0x0D
,\r
) bewegt den Cursor an den Zeilenanfang, ohne zur nächsten Zeile zu gelangen. Dieses Zeichen wird in Commodore- und Early Macintosh-Betriebssystemen (OS-9 und früher) als neues Zeilenzeichen verwendet.Das Zeilenvorschubzeichen (LF) (
0x0A
,\n
) bewegt den Cursor nach unten zur nächsten Zeile, ohne zum Zeilenanfang zurückzukehren. Dieses Zeichen wird in UNIX-basierten Systemen (Linux, Mac OSX usw.) als neues Zeilenzeichen verwendet.Die EOL-Sequenz (End of Line) (
0x0D 0x0A
,\r\n
) besteht aus zwei ASCII-Zeichen, einer Kombination aus CR- und LF-Zeichen. Der Cursor bewegt sich sowohl nach unten zur nächsten Zeile als auch zum Anfang dieser Zeile. Dieses Zeichen wird in den meisten anderen Nicht-Unix-Betriebssystemen, einschließlich Microsoft Windows, Symbian OS und anderen, als neues Zeilenzeichen verwendet.Quelle
quelle
Da es keine Antwort gibt, die genau dies angibt, kurz zusammengefasst:
Wagenrücklauf (MAC vor OSX)
Zeilenvorschub (Linux, MAC OSX)
Wagenrücklauf und Zeilenvorschub (Windows)
Wenn Sie ASCII-Code in einem seltsamen Format sehen, sind dies lediglich die Zahlen 13 und 10 in einem anderen Radix / einer anderen Basis, normalerweise Basis 8 (Oktal) oder Basis 16 (Hexadezimal).
http://www.bluesock.org/~willg/dev/ascii.html
quelle
Jeff Atwood hat kürzlich einen Blog-Beitrag dazu veröffentlicht: The Great Newline Schism
Hier ist die Essenz aus Wikipedia :
quelle
<CR><CR><LF>
- also habe ich natürlich nur mit einem experimentiert<CR>
. Ich schickte<CR><LF>A
nach einer langen Schlange, und Sie konnten das Drucken hörenA
, bevor der Wagen vollständig zurückkam.<CR><CR>
die richtige Anzahl von Leerzeichen gesendet und eingegeben und dann dasselbe Wort erneut gedruckt haben: eine primitive Form der Fettschrift.CR - ASCII - Code 13
LF - ASCII-Code 10.
Theoretisch bringt CR den Cursor auf die erste Position (links) zurück. LF füttert eine Zeile und bewegt den Cursor eine Zeile nach unten. So haben Sie früher Drucker und Monitore im Textmodus gesteuert. Diese Zeichen werden normalerweise verwendet, um das Zeilenende in Textdateien zu markieren. Unterschiedliche Betriebssysteme verwendeten unterschiedliche Konventionen. Wie Sie bereits betont haben, verwendet Windows die CR / LF-Kombination, während Macs vor OSX nur CR usw. verwenden.
quelle
Hier sind die Details .
quelle
Der traurige Zustand von "Datensatztrennzeichen" oder "Leitungsterminatoren" ist ein Erbe des dunklen Zeitalters des Rechnens.
Nun nehmen wir an, dass alles, was wir darstellen möchten, in irgendeiner Weise strukturierte Daten sind und verschiedenen Abstraktionen entsprechen, die Zeilen, Dateien, Protokolle, Nachrichten, Markups usw. definieren.
Aber es war einmal nicht genau so. In Anwendungen integrierte Steuerzeichen und gerätespezifische Verarbeitung. Die hirntoten Systeme, die sowohl CR als auch LF benötigten, hatten einfach keine Abstraktion für Datensatztrennzeichen oder Zeilenabschlusszeichen. Die CR war erforderlich, damit der Teletyp oder die Videoanzeige zur ersten Spalte zurückkehrte, und die LF (heute NL, gleicher Code) war erforderlich, damit sie zur nächsten Zeile überging. Ich denke, die Idee, etwas anderes zu tun als die Rohdaten auf das Gerät zu übertragen, war zu komplex.
Unix und Mac haben tatsächlich eine Abstraktion für das Zeilenende angegeben. Stellen Sie sich das vor. Leider haben sie unterschiedliche angegeben. (Unix, ähm, stand an erster Stelle.) Und natürlich verwendeten sie einen Steuercode, der der SOP bereits "nahe" war
Da fast die gesamte heutige Betriebssoftware von Unix-, Mac- oder MS-Betriebssystemen abstammt, stecken wir in der Verwirrung um das Zeilenende.
quelle
NL abgeleitet von EBCDIC NL = x'15 ', was logisch mit CRLF x'odoa ascii verglichen werden würde ... dies wird deutlich, wenn Daten physisch von Mainframes in den mittleren Bereich verschoben werden. Umgangssprachlich (da nur arkane Leute ebcdic verwenden) wurde NL entweder mit CR oder LF oder CRLF gleichgesetzt
quelle