2017-01-23 6 views
0

FiredacのDELPHI XE3ではテーブルtable0を作成し、UTF8エンコーディングでテキストを挿入するとOKです。FIRテーブルを読むときにFIREDAC-UTF8エンコーディングはサポートされていません

CREATE TABLE table0 (mytext Ntext,publishdate date); 
INSERT INTO table0 (mytext,publishdate) VALUES ('привет','1998-12-07'); 

しかし、FTSテーブルを作成してUTF8でテキストを挿入すると、

CREATE VIRTUAL TABLE table1 USING FTS4(mytext,publishdate); 
INSERT INTO table1 (mytext,publishdate) VALUES ('привет','1998-12-07'); 

と我々が得る

SELECT mytext FROM table1 

でデータを読み取る "??????"。

SQLiteエキスパートパーソナルの同じコマンドは、 "привет"を返します。つまり、Insertコマンドの後のテーブルでは 'привет'を、selectではUTF8エンコーディングではないデータを返します。

Firedac

ADQuery.Open('SELECT mytext FROM table1')? 
+0

ここでは 'AsWideString'、または' AsWideMemo'は疑問符を返しますか?または値を得るために何を使用しますか?また、挿入するには、同様のアクセス権を持つパラメータを使用する必要があります。 – Victoria

答えて

0

でテーブルに正しい値から取得するために行うことができる私はそれがFireDacのバグだと思います。

IはABaseTypeName = 'VARCHAR'

場合について

SetLen(AOptions.FormatOptions.MaxStringSize, True); 
AType := dtWideString; 

にuADPhysSQLite.pas部

SetLen(AOptions.FormatOptions.MaxStringSize, False); 
AType := dtAnsiString; 

のADSQLiteTypeName2ADDataType手順の次の行を変更しました

SELECT mytext FROM table0 

は、実行時に正しい値を返します。しかし、設計時にはまだ「??????」があります。

しかし、私はそれが良い解決策だとは思わない。

関連する問題