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