Ascii-Werte von \n\r
Gerd
- perl
Hallo,
kann mir jemand sagen, welchen Ascii- oder Hex-Werten die Zeichen
\n und \r entsprechen ?
Danke
Gerd
Hi Gerd!
kann mir jemand sagen, welchen Ascii- oder Hex-Werten die Zeichen
\n und \r entsprechen ?
Bei Wikipedia gibt es unter dem Stichwort ASCII eine hilfreiche Tabelle.
MfG H☼psel
Hi, und danke
Bei Wikipedia gibt es unter dem Stichwort ASCII eine hilfreiche Tabelle.
aber leider weiß ich Grünschnabel nicht, welchem der Zeichen
SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
in der Tabelle \n bzw. \r entspricht ?
Hallo Gerd.
aber leider weiß ich Grünschnabel nicht, welchem der Zeichen
[…]
in der Tabelle \n bzw. \r entspricht ?
CR steht für „Carriage Return“ und entspricht dem \r (return).
LF steht für „Line Feed“ und entspricht dem \n (newline).
Einen schönen Donnerstag noch.
Gruß, Ashura
LF steht für „Line Feed“ und entspricht dem \n (newline).
Nur unter Linux, oder?
auf einem Windows Rechner ist \n zwei Zeichen lang \CR \LF und auf Apple Rechnern \CR
Struppi.
Hallo Struppi.
LF steht für „Line Feed“ und entspricht dem \n (newline).
Nur unter Linux, oder?
Nein, eigentlich nicht. LF ist immer LF.
auf einem Windows Rechner ist \n zwei Zeichen lang \CR \LF und auf Apple Rechnern \CR
Nein, die Zeilenumbrüche sind auf genannten Systemen so üblich. (Wobei das für den Mac aufgrund seines BSD-Subsystemes nicht mehr gelten dürfte.)
Einen schönen Samstag noch.
Gruß, Ashura
LF steht für „Line Feed“ und entspricht dem \n (newline).
Nur unter Linux, oder?
Nein, eigentlich nicht. LF ist immer LF.
Ja, aber LF entspricht nicht \n
Struppi.
Hallo Struppi.
LF steht für „Line Feed“ und entspricht dem \n (newline).
Nur unter Linux, oder?
Nein, eigentlich nicht. LF ist immer LF.
Ja, aber LF entspricht nicht \n
Einen schönen Samstag noch.
Gruß, Ashura
Ja, aber LF entspricht nicht \n
Da steht
In _Unix_, a line feed is more often called a newline....
Aber:
http://en.wikipedia.org/wiki/Newline
Systems based on ASCII or a compatible character set use either LF ... or CR ... individually, or CR followed by LF
Also, \LF entspricht nicht unbedingt \n
Struppi.
Hallo Struppi.
Aber:
http://en.wikipedia.org/wiki/NewlineSystems based on ASCII or a compatible character set use either LF ... or CR ... individually, or CR followed by LF
Also, \LF entspricht nicht unbedingt \n
Da hast du offenbar recht.
Einen schönen Samstag noch.
Gruß, Ashura
Moin!
Also, \LF entspricht nicht unbedingt \n
"Nicht unbedingt" - das ist der Knackpunkt.
Wenn man Quellen zu diesem Thema zusammenträgt, muß man zu folgender Erkenntnis kommen:
Irgendein Subsystem haut irgendwie immer dazwischen und "versaut es". Wenn die Programmiersprache selbst (so wie PHP) eindeutige Definitionen für \n und \r hat, so kann dennoch beim Schreiben in Dateien irgendein ASCII-Modus eine Anpassung von "\n"==="LF" hin zu "\n"=>"CRLF" (o.ä.) und umgekehrt bei Lesen eine Konvertierung von "CRLF" hin zu "LF"==="\n" vornehmen. Das bedeutet: In der Datei steht CRLF, innerhalb der Sprache sieht man aber nur "\n" bzw. LF.
Szenario 1: Testet man z.B. mit PHP unter Windows im ASCII-Dateimodus (der beim Schreiben eine Wandlung von LF in CRLF vornimmt) und nutzt nur "\n", transferiert dann die Datendatei im ASCII-FTP-Modus (der ebenfalls eine Zeilenendwandlung vornimmt, beim Upload von Windows zu Unix von CRLR hin zu LF) auf einen Unix-Server und testet dort erneut, merkt man nichts. Unix kennt zwar keinen ASCII-Dateimodus, aber da die Zeilenenden durch den FTP-Transfer gewandelt wurden, paßt dem Skript alles.
Szenario 2: Nutzt man stattdessen durchgehend binäre Datei- und Transfermodi, wird aus "\n" unter Windows nur ein LF in die Datei geschrieben, beim binären FTP-Transfer bleibt das LF erhalten, und beim binären Lesen unter Unix ebenfalls. Also paßt auch alles.
Szenario 3: Nur wenn man ASCII und Binär nicht durchgehend beibehält, gibts Murks - beispielsweise, wenn man die Datei mit PHP im ASCII-Modus schreibt und liest, aber im Binärmodus mit FTP hochlädt.
Szenario 4: Wenn man umgekehrt einfach erwartet, dass Dateien eine beliebige Form des Zeilenumbruchs enthalten könnte (CR/LF/CRLF), kann einem irgendeine unerwartete Veränderung, die externe Programme, FTP-Transfers etc. am Zeilenumbruch vornehmen, hingegen ziemlich egal sein.
Aber deutlich festzuhalten ist in meinen Augen: Jede Programmiersprache setzt "\n" in der internen Stringbehandlung erstmal immer nur in ein Linefeed um (behaupte ich jetzt einfach mal: stringlength("\n")==1 && ASCII("\n")==10). Die Wandlung in plattformabhängige Zeilenenden geschieht abhängig von entsprechenden I/O-Subsystemen - oder eben auch nicht. Und das kann einem, je nach Szenario, vollkommen egal sein - oder eben auch nicht.
- Sven Rautenberg
gudn tach!
Bei Wikipedia gibt es unter dem Stichwort ASCII eine hilfreiche Tabelle.
aber leider weiß ich Grünschnabel nicht, welchem der Zeichen [...]
in der Tabelle \n bzw. \r entspricht ?
direkt unter der tabelle ist folgender text zu lesen
"Die ersten 32 ASCII-Zeichencodes (von 00 bis 1F) sind für Steuerzeichen (control character) reserviert; siehe dort für die Erklärung der Abkürzungen in obiger Tabelle."
;-)
ansonsten waere bei "siehe auch" ein verweis zur ascii-tabelle, von wo man ebenfalls explizit auf den artikel zu steuerzeichen aufmerksamgemacht wird.
prost
seth
Hi!
Hallo,
kann mir jemand sagen, welchen Ascii- oder Hex-Werten die Zeichen
\n und \r entsprechen ?
Danke
Gerd
Falls du noch mehr Zeichen suchst, hilft dir das folgende kleine C-Programm vielleicht weiter (unter Linux mit gcc dateiname.c kompilieren, unter Windows oder Mac weiss ich nicht, wie)
(Ich nehme jetzt mal an, dass du kein C beherrschst und kommentiere das Programm sorgfaeltigst aus - Einzeilige Kommentare werden mit "//" eingeleitet, ich glaube, das entspricht "#" in Perl)
-------Programmanfang, diese Zeile gehoert nicht dazu---------
#include <stdio.h> // Fuegt die Header-Datei fuer Ein/Ausgabe ein
int main ( void ) // Hauptprogramm
{
int c; // Eine Integer-Variable fuer den Zahlenwert es Zeichens
c = '(das Zeichen, z. B. \n)'; // Das Zeichen...
printf("Das Zeichen %c hat den Wert %d!\n", c, c); // Ausgabe vom
// Zeichen (%c fuer _c_haracter, %d fuer
// _d_ezimal)
}
-------Programmende, diese Zeile gehoert nicht dazu---------
Ich hoffe, du kannst es gebrauchen...
ciao,
xjs
Hallo xjs.
Falls du noch mehr Zeichen suchst, hilft dir das folgende kleine C-Programm vielleicht weiter (unter Linux mit gcc dateiname.c kompilieren, […]
Da gibt es Probleme:
ashura@core2:~$ gcc test.c
test.c:6:9: warning: character constant too long for its type
Ich erhalte diese Warnung mit dem GCC 3.3, 3.4, 4.0 und 4.1.
Einen schönen Freitag noch.
Gruß, Ashura
gudn tach!
ashura@core2:~$ gcc test.c
test.c:6:9: warning: character constant too long for its typeIch erhalte diese Warnung mit dem GCC 3.3, 3.4, 4.0 und 4.1.
aehem, sorry fuer diese frage, aber du hast die folgende zeile schon entsprechend abgeaendert, oder?
c = '(das Zeichen, z. B. \n)'; // Das Zeichen...
oder sollte das ein witz sein und ich habe ihn nicht verstanden?
prost
seth
Hallo seth.
ashura@core2:~$ gcc test.c
test.c:6:9: warning: character constant too long for its typeIch erhalte diese Warnung mit dem GCC 3.3, 3.4, 4.0 und 4.1.
aehem, sorry fuer diese frage, aber du hast die folgende zeile schon entsprechend abgeaendert, oder?
Nein, hatte ich nicht.
c = '(das Zeichen, z. B. \n)'; // Das Zeichen...
oder sollte das ein witz sein und ich habe ihn nicht verstanden?
Der Zaunpfahl war in meinen Augen zu klein.
Einen schönen Samstag noch.
Gruß, Ashura
gudn tach!
([...] Einzeilige Kommentare werden mit "//" eingeleitet, ich glaube, das entspricht "#" in Perl)
ja.
printf("Das Zeichen %c hat den Wert %d!\n", c, c);
das gibt's in perl auch, und wenn man die variable c (oder in perl $c) mit ord("\n") initialisiert, dann wird auch das gleiche ausgespuckt.
my $c=ord("\n");
printf("Das Zeichen %c hat den Wert %d!\n", $c, $c);
prost
seth