2016-09-13 6 views
1

Ich habe einige Probleme mit FDQuery (FireDac), dass ich wirklich nicht verstehen kann, was falsch läuft. Ich hatte den gleichen Code auf Delphi 7 + ZeosMySQL und dieses Problem ist nicht aufgetreten.Abfrage mit FireDac bringt einige "asiatische" Zeichen ... warum?

Jetzt, auf Delphi 10 Seattle + FireDac, bringt genau der gleiche Code einige 'chinesische' Zeichen. Hier ist mein Beispiel:

Meine Tabelle (MySQL 4.1):

CREATE TABLE `tabdollar` (
    `CODIGO` INT(11) NULL DEFAULT NULL, 
    `DOLLAR` FLOAT(16,2) NOT NULL DEFAULT '0.00', 
    `EMPRESA_USU` VARCHAR(30) NOT NULL DEFAULT '', 
    INDEX `CODIGO` (`CODIGO`)) 
COLLATE='latin1_swedish_ci' 
ENGINE=MyISAM; 

Ich schrieb diesen einfachen Code auf einem Knopf mir das Ergebnis auf einem Etikett zu zeigen:

qryAux.Close; 
    qryAux.SQL.Clear; 
    qryAux.SQL.Text := 'show columns from tabdollar'; 
    qryAux.Open; 

    Label1.Caption := qryAux.FieldByName('Type').AsString; 

Dieser Code auf Delphi 7 zeigt den Spalten Typ oder Namen korrekt an. Auf Delphi 10 Seattle zeigt es einige verschiedene Charaktere (wahrscheinlich chinesisch oder japanisch, ich weiß es wirklich nicht).

Hat jemand eine Idee, warum das passiert? Gibt es da eine Eigenschaft bei FireDac Query, um die richtigen Zeichen zu bringen?

Danke

+0

I XE5 mit FireDac auf MySQL 5.x bin mit und haben keine Probleme hatte. Könnte ein Unicode-Problem sein http://docwiki.embarcadero.com/RADStudio/XE8/en/Unicode_Support_(FireDAC) Die Unterstützung hängt von Ihrer Version von Delphi ab. – Jaydee

+0

Danke für die Antwort Jaydee, aber ich bekomme immer noch nicht das Problem. Wie gesagt, ich benutze Delphi 10 Seattle Version 23.0.20618.2753. Der Unicode der Datenbank (MySQL 4.1) und o.s. (Windows) sind gleich. – SisMaster

+0

Wenn Sie nur die Kollatierung 'latin1_swedish_ci' in Ihrer Datenbank verwenden, verwenden Sie den Verbindungsparameter' CharacterSet = latin1'. – Victoria

Antwort

2

Ziemlich sicher, dass dies ein ANSI/UNICODE-Problem ist.

Delphi 7 war ANSI (= konnte "chinesische" Zeichen nicht unterstützen), 10 Berlin ist UNICODE.

Versuchen

qryAux.FieldByName ('Typ') mit AsANSIString.

und sehen, ob dies den Text zeigt, den Sie erwarten.

Ist dies der Fall ich Ihr Problem nicht gelöst haben, aber Sie können versuchen, Ihre Daten zu UNICODE konvertieren ...

+0

Es funktioniert! Vielen Dank Adam, es funktioniert perfekt! – SisMaster

Verwandte Themen