AW: [Allegro] import und acon erneuert
Thomas Fischer
fischer at sub.uni-goettingen.de
Mo Feb 1 10:08:38 CET 2010
Hallo Herr Eversberg,
> Nein, das Programm ist mit 4stelligen UTF-Codes schlicht überfordert.
> Da müßten wir erst, sollte das ein echtes Desiderat sein,
> beim Unicode-Konsortium vorstellig werden und uns den
> (hoffentlich kostenlos nutzbaren) Umrechnungsalgorithmus
> besorgen und mal schauen, ob wir's damit hinkriegen.
Der Umrechnungsalgorithmus ist weder kompliziert noch proprietär.
In Perl sieht er bei mir so aus:
while(<>){
s/([\xc0-\xf4])([\x80-\xbf]+)/&utf8Replace($1,$2)/ge;
print;
}
sub utf8Replace{
my ($a,$b) = @_;
my @b = split //,$b;
my $summand = 0;
if ($#b == 0) {$summand = 192;}
elsif ($#b == 1) {$summand += 224;}
elsif ($#b == 2) {$summand += 240;}
else {return $a.$b.'(ZZX);'}
my $number = ord($a) - $summand;
return $a.$b.'(ZZZ)' if ($number < 0);
my $test = "";
while (@b)
{$number = ($number << 6) + ord(shift(@b)) - 128;}
return '&#'.$number.';';
}
Fehlerhafte Zeichen werden da allerdings nur markiert und nicht bearbeitet.
(Umrechnung des Mahjong-Jokers ist mir mangels geeignetem Zeichensatz nicht gelungen, aber die anderen 4-stelligen UTF-8 Zeichen hat das funktioniert.)
Mit freundlichen Grüßen
Thomas Fischer
Mehr Informationen über die Mailingliste Allegro