[Allegro] Umwandlung UTF-8 -> Entitaetencodes

Bernhard Eversberg ev at biblio.tu-bs.de
Fr Mär 20 09:41:02 CET 2009


Wer intern mit UTF-8 arbeitet, hat's nicht leicht.
Mit den P- und Q-Befehlen kann man zwar eine Anzahl von UTF-Codes
auf Entitäten der Form  \uE?  umcodieren, die dann wenigstens im
Anzeigefeld "korrekt" sichtbar werden, wenn schon nicht im
Auswahl- und Schreibfeld (wo es einfach technisch nicht geht).

Allzuviele P-Befehle kann man aber nicht haben, dann fliegt es einem
um die Ohren wegen Speichermangel. Für's Chinesische ist die Methode
hoffnungslos.
Kollege Allers kam auf die zündende Idee, man könne doch sicher in
einem Unterprogramm automatisch aus den UTF-Codes die Entitätennummern
errechnen und dann wahlweise diese Nummer zwischen \u...?  oder für
HTML zwischen  &#...;  einschließen.
Das haben wir uns mal vorgenommen und es ließ sich lösen.
Mit dem Umrechnen ist es so eine Sache. Fertige Unterprogramme gibt
es zwar dafür, aber es fand sich nichts, was man leicht in C++
hätte einbinden können - alles zuviel Overhead oder sonstwie ungeeignet.
Eigenprogrammierung war angesagt. Dazu wurden erst einmal die
Algorithmen ein wenig untersucht und auf den notwendigen Umfang
reduziert.
Das Ergebnis wird nun eingebaut werden.

Man wird zwei Möglichkeiten haben:

FLEX  xcode U\\u ?    bzw.   xcode U&# ;

oder Export:

    Einstellung der Begrenzungszeichen:
u\u ?        bzw.   u&# ;
    Umcodierung des Datensatzes:
#dU
    dann normal exportieren.

Wer mal wissen will, wie man denn aus UTF-8-Codes (2- und 3stelligen)
die E-Zahlen errechnet bzw. umgekehrt, kann sich das mal hier anschauen:

http://www.allegro-c.de/unicode/#anhang

Dank an Allers für minutiöse Durchsicht der Beschreibung.
B.E.



Mehr Informationen über die Mailingliste Allegro