Thread Zeilenumbruch konvertieren ->?: ASCII-Datei von Win <-> Unix (6 answers)
Opened by youngalcapone at 2003-10-05 21:12

Dubu
 2003-10-06 08:48
#96110 #96110
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Ein \n ist unter Unix/Linux und Windows ein Linefeed, also chr(10).
Davon kann man sich ganz einfach ueberzeugen:
Code: (dl )
print ord "\n";

Einzig beim Einlesen oder Schreiben einer nicht mit binmode() als binaer deklarierten Datei oder Pipe wird zwischen CRLF und LF umgewandelt.

Deine Ersetzung, DS, ist wirklich eine Null-Operation. Sie wuerde aber magischerweise "funktionieren", wenn du auf einem Windowssystem eine Unixdatei mit binmode() einliest und dann im Textmodus schreibst, weil dann beim Einlesen \n = \012 = LF = Unix Zeilentrenner erhalten bleibt und beim Schreiben \n => \015\012 => CRLF umgewandelt wird.

Edit: Das Einlesen unter Binmode ist nicht einmal erforderlich, da ja auch im Textmode ein LF ein LF bleibt. Somit reicht es, eine Unix/Linux-Datei unter DOS/Windows einzulesen und gleich wieder zu schreiben, damit die Zeilenenden geaendert werden. Umgekehrt klappt das natuerlich nicht.\n\n

<!--EDIT|Dubu|1065423867-->

View full thread Zeilenumbruch konvertieren ->?: ASCII-Datei von Win <-> Unix