Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   XE2, Firebird und jetzt auch noch Unicode.. (https://www.delphipraxis.net/165216-xe2-firebird-und-jetzt-auch-noch-unicode.html)

Billa 19. Dez 2011 11:05

Datenbank: Firebird • Version: 2.5 • Zugriff über: dbExpress

XE2, Firebird und jetzt auch noch Unicode..
 
Hallo,

nachdem man mir schon am Wochenende bzgl. Datenbankverbindung erfolgreich "aufs Pferd" geholfen hat, habe ich die Hoffnung, dass man mir auch beim nächsten Problem das Licht anzünden kann:

Ich möchte in einer kleinen Anwendung Daten aus einer Firebird Datenbank (Standardzeichensatz ist UTF8) lesen. Soweit kein Problem. Habe u.a. zwei Felder

WHO_NAME Varchar(50)
WHO_ARAB Varchar(50)

Das zweite Feld soll eben arabische Zeichen enthalten. Die Darstellung in der Datenbank ist kein Problem. Im Designer (IBExpert) kann ich korrekte Daten ein- bzw. ausgeben.

Beim Lesen durch die Testapplikation:


Delphi-Quellcode:
  with ibquery1 do
  begin
    open;
    id := FieldByName('WHO_ID').AsInteger;
    edit1.Text := FieldByName('WHO_ARAB').AsWideString;
    edit2.Text := FieldByName('WHO_NAME').AsWideString;
  end;

allerdings wird etwas völlig anderes angezeigt. Gebe ich andererseits in der Testapplikation einen arabischen Text ein (Anzeige am Schirm korrekt)

Delphi-Quellcode:
  with ibquery2 do
  begin
    ParamByName('PA').AsWideString := edit1.Text;
    ParamByName('ID').AsInteger := id;
    Open;
    Close;
  end;
steht in der Datenbank wieder etwas völlig anderes. Alle anderen Felder werden korrekt geschrieben und gelesen. Vermutlich ein Konvertierungsproblem. Das Editfeld ist "bdRightToLeft", "ARABIC_CHARSET", "@Arial Unicode MS".

Was läuft da falsch?

Bernhard Geyer 19. Dez 2011 11:11

AW: XE2, Firebird und jetzt auch noch Unicode..
 
Zitat:

Zitat von Billa (Beitrag 1142184)
Das Editfeld ist "bdRightToLeft", "ARABIC_CHARSET",

Nimm mal die Charset geschichte raus und setz es auf DEFAULT_CHARSET.
Evtl. ist hier noch ein Bug. Für Unicde brauchst du die Krückenlösung Charset ja nicht mehr.

Billa 19. Dez 2011 11:34

AW: XE2, Firebird und jetzt auch noch Unicode..
 
Danke erstmal für die schnelle Antwort. Habe auf die Einstellungen beim Editfeld verzichtet, aber es ändert sich leider nichts. Jetzt stehen nach dem Schreiben allerdings Fragezeichen in den Feldern. Auch im IBExpert.

himitsu 19. Dez 2011 12:03

AW: XE2, Firebird und jetzt auch noch Unicode..
 
Es gibt einmal das Charset der Edits (für die ANSI-API-Zugriffe)
und dann gibt es die Kodierung der Datenübertragung (Programm <> DB-Server),
dann noch eine Kodierung für die Speicherung der Datenfelder
usw.

Billa 19. Dez 2011 12:31

AW: XE2, Firebird und jetzt auch noch Unicode..
 
Jetzt funktioniert es! Habe die DB-Komponenten nochmal ganz neu konfiguriert und dabei den Zeichensatz gleich in den Parametern gesetzt. Und das war es. Auch Textblob funktioniert (auch gemischt). Die Anfangshürden sind offenbar genommen. Jetzt finde ich hoffentlich allein weiter. Vielen Dank Euch beiden!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz