Hallo,
ich habe ein kleines Problem, wenn ich Perl auf einem Windows XP System auf Unicodedateien loslassen möchte. Die Fragliche Datei ist ein Template für den Windows Media Encoder, dieser scheint wohl unbeding eine UTF-16LE Datei zu benötigen. Ich will mein eigenes Template einlesen, ein paar Werte drin verändern und das ganze dann wieder in eine Datei schreiben, welche ich an den Encoder verfüttere.
Das Problem, welches ich dabei habe kann ich aber auch an einem kürzeren Beispiel schildern. Nehmen wir folgende Eingabedatei:
| FF FE 65 00 69 00 6E 00 73 00 0D 00 0A 00 7A 00 || ÿþe.i.n.s.....z. |
| 77 00 65 00 69 00 || w.e.i. |
Wenn ich nun folgendes Programm laufen lasse:
| open IN, "<:encoding(UTF-16LE)", "$in";
| @file = <IN>;
| close IN;
|
| open OUT, ">:encoding(UTF-16LE)", "$out";
| print OUT @file;
| close OUT;
dann steht in der Ausgabedatei hinterher folgendes:
| FF FE 65 00 69 00 6E 00 73 00 0D 00 0D 0A 00 7A || ÿþe.i.n.s......z |
| 00 77 00 65 00 69 00 || .w.e.i. |
Der Zeilenumbruch, welcher eigentlich ein "cr 0 lf 0" sein sollte wurde bei der Ausgabe zu einem "cr 0 cr lf 0", somit ist also die gesamte Datei nicht mehr wirklich zu gebrauchen.
Mein Perl ist v5.8.4 built for MSWin32-x86-multi-thread (Binary build 810 provided by ActiveState Corp).
Wäre schön, wenn jemand weiß, wie man diesem Problem beikommen kann.
Viele Grüße,
Stefan