ich habe ein Problem beim Schreiben/Lesen von Unicode Text und BLOB Feldern und befinde mich in einer NAV 2013 R2 Umgebung. Beispielhaft habe ich das mit dem Unicodezeichen U+207A (8314) gemacht, das ist das hochgestellte +
Wenn ich dieses Zeichen einem Bigtext zuweise und per Message ausgebe ist alles richtig. Wenn ich den Bixtext dann per Stream in das BLOB Feld schreibe und wieder auslese ist es leider nicht mehr richtig. Schaue ich mir den Dezimalwert vom Zeichen an, ist er nach dem Auslesen auch nicht mehr 8314 sondern 63 (entspricht dem Fragezeichen, dass sehe ich dann auch anstelle des hochgestellten +).
Hier mein Code:
- Code: Alles auswählen
charVar := 8314; // entspricht dem hochgestellten +
A.INIT;
A.RESET;
IF A.FINDFIRST THEN BEGIN
CLEAR(bigtextVar);
bigtextVar.ADDTEXT(FORMAT(charVar));
MESSAGE(FORMAT(bigtextVar)); // es erscheint noch richtig
A.Description.CREATEOUTSTREAM(OutStr,TEXTENCODING::UTF16);
bigtextVar.WRITE(OutStr);
A.MODIFY;
CLEAR(bigtextVar);
A.CALCFIELDS(Description);
A.Description.CREATEINSTREAM(InStr, TEXTENCODING::UTF16);
bigtextVar.READ(InStr);
MESSAGE(FORMAT(bigtextVar)); // es erscheint falsch
END;
Ich habe bereits versucht andere Encodings bei den Streams einzustellen, die Subtyp-Eigenschaft vom BLOB Feld auf User-defined oder Memo zu stellen und die Compresses-Eigenschaft vom BLOB Feld auf No oder Yes zu stellen. Hat alles nichts gebracht.
Hat jemand eine Idee? Wo ist mein Denkfehler bzw. wieso funktioniert das nicht?
Viele GrĂĽĂźe
Daniel