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