2016-09-13 4 views
1

私はFDQuery(FireDac)にいくつかの問題を抱えています。私は本当に間違っていることを得ることができません。以前はDelphi 7 + ZeosMySQLで同じコードを使用していましたが、この問題は発生しませんでした。FireDacでいくつかの「アジア人」のキャラクターを持ってきて...なぜですか?

今、Delphi 10 Seattle + FireDacでは、全く同じコードがいくつかの '中国語'の文字を持っています。ここに私の例を示します(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; 

私はラベルに私に結果を表示するためのボタンで、この単純なコードを書いた:

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

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

にこのコードをDelphi 7では、列の型または名前が正しく表示されます。 Delphi 10 Seattleではいくつかの異なる文字を表示しています(おそらく中国語や日本語、私は本当にわかりません)。

これはなぜ起こっているのでしょうか?そこにFireDacのいくつかのプロパティは、文字を正しく取得するクエリですか?

ありがとうございます。

+0

...私はあなたの問題を解決していないが、あなたはUNICODEにデータを変換しようとすることができない場合、私は、MySQL 5.xの上FireDacでXE5を使用していますし、何の問題もなかったしています。 Unicodeの問題である可能性がありますhttp://docwiki.embarcadero.com/RADStudio/XE8/en/Unicode_Support_(FireDAC)サポートはお使いのデルファイのバージョンによって異なります。 – Jaydee

+0

答えJaydeeに感謝します。でも、私はまだ問題はありません。私が言ったように、私はDelphi 10 Seattleバージョン23.0.20618.2753を使用しています。データベースのユニコード(MySQL 4.1)とo.s. (Windows)は同じです。 – SisMaster

+0

データベースで 'latin1_swedish_ci'照合のみを使用している場合は、' CharacterSet = latin1'接続パラメータを使用してください。 – Victoria

答えて

2

これはANSI/UNICODEの問題ですか。

デルファイ7はANSI(「中国語」文字をサポートできませんでした)、10ベルリンはUNICODEです。

qryAux.FieldByName( 'タイプ')を使用してみてくださいAsANSIString。

これが期待するテキストを表示しているかどうかを確認してください。

それは

+0

それは動作します!そんなにアダムありがとう、それは完璧に動作します! – SisMaster

関連する問題