He,auf meinem Windows-Computer gibt es ein fremdes Programm das immer Textdateien (Protokolldateien) erzeugt, diese sind als UNICODE, also 16-Bit txt-Dateien gespeichert.
Mit Perl will ich diese Dateien öffnen (open), gewisse dinge ersetzen und ranhängen und in eine Textdatei wieder ausgeben (z.B. mit nem Perl-skript redundante oder für mich nicht wichtige infos entfernen, die protokolldatei komprimieren oder so, ganz simpele Dinge jedenfalls).
Die Ausgabedatei kodiert Perl immer standardmäßig mit ANSI. Das ist gut so. Das soll so sein. Jetzt das Problem:
Ich öffne normal mit "open TXT, $file", versuche ich dann dadrin Text zu erkennen (s///, patternmatching und solche sachen) funktioniert fast nichts. Es erfolgt keine Modifikation des Textes. Danach gibt das Skript alles per "print TXT2" in eine neue Textdatei aus, und was sehe ich wenn ich diese mit dem Editor öffne? sonderzeichen am anfang, und überall Leerzeichen.
Eindeutig also begründet durch die Umwandlung von UNICODE in den Perlinterpretor und vom Perlinterpretor wieder in ANSI.
Das erklärt warum der Text im Skript nicht erkannt wird, nichts erstezt wird usw., weil die Sonderzeichen stören.
-->Frage: wie öffne ich eine UNICODE-16Bit-Datei, sodass Perl reinen ANSI-Text bearbeiten und speichern kann?
Ich stelle mir Metasprachlich etwa folgendes vor, um das Problem nochmal zu verdeutlichen:
open TXT, $file;
while ($zeile = <TXT>) {
Konvertiere_U16-to-ANSI-Text($zeile)
$zeile =~ s/abc/xyz/;
open TXT2, ">$file2";
print TXT2 $zeile;
}
Ich las etwas von Modul "Encode" oder der Standardfunktion "pack()", weis aber überhaupt nicht ob das Lösungen des Problems sind, weis jmd weiter?Gruß
Martin
Datum: 02.01.2006-05:00
