[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