Also was ich jetzt so gelesen hatte, ist das wohl ein Laster das wir als Benutzer des Latin-Zeichensatzes haben.
Beim einlesen mittels XML::Simple werde Umlaute und Sonderzeichen wie ¤ in UTF-8 (\x{20AC}) umgewandelt. Man muss es dann entweder wieder direkt in das Zeichen zurücktransformieren:
use Unicode::String;
$string = Unicode::String::utf8($string)->latin1();
Oder noch besser man wandelt die Sonderzeichen gleich in HTML-ASCII-Werte um:
use utf8;
s/([\x{80}-\x{FFFF}])/'&#' . ord($1) . ';'/gse;
Eine direkte Lösung über XML::Simple habe ich nicht finden können und bezweifle auch das es soetwas gibt.
Gruß Alex