[Allegro] Problem mit Konv. UTF-8 --> Entitätszahl (Vb. 215)
Heinrich Allers
allers at t-online.de
Mi Mär 9 08:29:06 CET 2011
Hallo:
[Neuauflage meines bereits am 3.3. dargestellten Problems:
http://sun250.biblio.etc.tu-bs.de/pipermail/allegro/2011-March/033156.html
das damals nicht richtig ankommen konnte, weil in der mitgegebenen FLEX-Datei in der Zeile
var "#20 Arbeit " 194 171 " und " 197 141 " Herrschaft" n
die entscheidenden Code-Sequenzen nicht die Übermittlung überleben konnten.]
Bei der Umwandlung von UTF-8-Codes in Codierung mittels Entitätszahlen (siehe Verlautbarung 215) bin
ich auf ein Problem gestoßen. Statt langer Worte stelle ich diese FLEX-Datei bereit, die, auf der Demo-
Datenbank agierend, das Problem gut wahrnehmbar werden läßt:
#### FLEX-Datei / Anfang ####
// Bereitstellung von _xutfent.apr / Anfang
expo f _xutfent.apr
wri "u&# ;" n\wri "#20 y4"
close x
// Bereitstellung von _xutfent.apr / Anfang
var "|1 heidt, ulri?"\f1nd\disp
expo f _xtitel.adt
wri "#00 " #00 n
// #20 ersetzen durch "Arbeit" plus
// LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
// plus "und" plus
// LATIN SMALL LETTER O WITH MACRON
// plus "Herrschaft":
var "#20 Arbeit " 194 171 " und " 197 141 " Herrschaft" n
wri
// « = LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
// Unicode 171(00ab); UTF-8 194-171(c2ab)
// LATIN SMALL LETTER O WITH MACRON
// Unicode 333(014d); UTF-8 197-141(c58d)
close x
set u 41\var W "\\_xtitel.adt"\update
var #20
// Erste Meldung:
mes
xcode U&# ;
// Zweite Meldung:
mes
xport p _xutfent\xport f _xutfent.txt
dow\close x
open _xutfent.txt\get\close
// Dritte Meldung:
mes
#### FLEX-Datei / Ende ####
Was macht diese FLEX-Datei? Sie zerschießt als erstes die Kategorie "Titel" der Aufnahme mit dem Autor
Ulrich Heidt, schiebt dort ein Feld #20 rein, das in UTF-8-Codierung die Zeichen enthält, deren
Entitätszahlen 171 und 333 sind.
Wenn man diese FLEX-Datei arbeiten läßt, sind
die zweite Meldung wichtig, denn sie zeigt, daß die in der Datenbank abgelegten UTF-8-Codes der beiden
fraglichen Zeichen korrekt von Allegro in ihre Entitätscodierungen umgewandelt werden; dann
die dritte Meldung, denn sie zeigt das Problem: während die Codierung von LATIN SMALL LETTER O
WITH MACRON korrekt in die Entitätszahl 333 umgesetzt wird, wird die von LEFT-POINTING DOUBLE
ANGLE QUOTATION MARK nicht korrekt umgesetzt: es wird von der UTF-Codierung einfach nur das
erste Byte geschnappt und dessen Dezimalcode fälschlicherweise als Entitätszahl ausgegeben.
Der Grund könnte sein, daß der letzte Schritt, dessen Ergebnis mit der dritten Meldung abgeschlossen
wird, mittels parameterdateigesteuerten Exports erfolgt - ist aber nur 'ne Vermutung, ich lade meine
Ratlosigkeit hier erst einmal so ab ...
Mit besten Grüßen von
Heinrich Allers
allers at t-online.de * http://www.h-allers.de
Netztagebuch: http://heinrich-erlo-ger.blogspot.com/
Bitácora: http://heinrich-erlo-spa.blogspot.com/
Mehr Informationen über die Mailingliste Allegro