Frimi Dimpel: UFT-8 / UCS Konvertierung in Perl

Beitrag lesen

Hallo!

Ich übergebe mit einem CGI/Perl-Skript Formulardaten, bei denen internationale Zeichensätze verwendet werden. Die Formulardaten werden anschließend gespeichert und wieder in HTML ausgegeben (z.B. als &_#_252;). Die Codierung erfolgt in Unicode. Für ein- und zweibyte-Werte habe ich ein funktionierendes Skript (das etwa bei "ü" die übergebenen Werte 195-188 in &_#_252; umwandelt), aber es scheitert bei dreibyte-Werten, die dann entstehen, wenn jemand z.B. aus Word öffnende oder schließende Anführungszeichen ins Formularfeld kopiert. Für JavaScript scheint es eine Lösung zu geben (http://selfaktuell.teamone.de/artikel/javascript/utf8b64/utf8.htm#a4). Gibt es ein ähnliche Lösung für Perl?
Lieben Dank!

Hier die Lösung, die ich bislang für die zweibyte-Werte verwende:
sub utfucs {
 $z=$text;
 $x=ord(substr($z,$i,1));
 $y=ord(substr($z,$i+1,1));

if ($x>128) {
  $ucs=($x-192)*2**6+($y-128);
  $ucs="&#".$ucs.";";
  substr($text,$i,2)=$ucs;

Nächstes Zeichen in $text in Steuerschleife; $i = Laufvariable:

$i=$i+length($ucs)-2;
 } #if ($x>128)
}