Verschiedene Windows-Tools haben so ihre Probleme mit UTF-8 kodierten Daten. Für ein deutsches Windows könnte man dann auf die Idee kommen, die mit Perl generierten Daten aus UTF-8 z.B. in "CP1252" zu konvertieren und gleich so zu speichern. Dazu kann das Standardmodul "Encode" benutzt werden.
Laut Dokumentation bietet dasw Modul u.a. eine recht nützliche Funktion namenx
from_to() an. Leider schweigt sich die Dokumentation (siehe "perldoc Encode") darüber aus, das diese Funktion nur verfügbar ist, wenn Encode mit dem Tag
:all importiert wird. Glücklicherweise liefert "perldoc -m Encode" ja den Quelltext des Moduls, und wenn man dann noch weiß, auf was man achten muss...
Damit kann man folgendes Beispiel konstruieren:
use Encode qw/:all/;
## Daten besorgen
$data="SOME UTF-8 ENCODED DATA";
## Drauf vertrauen das die Daten wirklich UTF-8 Daten sind und diese in
## cp1252 (das Windows Pendant von Latin-1) wandeln...
from_to($data, "utf-8", "cp1252");
## ... und ausgeben
print $data."\n";
In diesem Beispiel enthält
$data UTF-8 kodierte Daten, die mittels Aufruf von
from_to nach CP1252 konvertiert werden. Zu Beachten ist, das
from_to die Übergebenen Daten
in-Place verändert, also die konvertierten Daten direkt in
$data schreibt. Ist diese in-Place Änderung nicht sinnvoll, so bietet das Modul auch die Operationen
encode() und
decode() an, die die Übergabeparamter nicht verändern.
Trackback URL for this post:
http://www.rdoering.net/trackback/29