Danke, ich kann den Fehler so reproduzieren:
Code:
var s, s2 : string;
a : AnsiString;
begin
s := '
Unicode' + #937 + #8356 + 'ABCÄÖÜ';
a := UTF8Encode(s);
s2 := UTF8Decode(a);
if s=s2 then ShowMessage('UTF8 Encode OK'); // <-- OK
WPData.DBQuery.SQL.Text := 'UPDATE "WPFILEITEMS" SET NAME=:NAME WHERE FILE_ID=1';
WPData.DBQuery.ParamByName('NAME').AsString := s;
WPData.DBQuery.ExecSQL;
WPData.DBQuery.SQL.Text := 'SELECT NAME FROM "WPFILEITEMS" WHERE FILE_ID=1';
WPData.DBQuery.OPEN;
s2 := WPData.DBQuery.FieldByName('NAME').AsString;
WPData.DBQuery.Close;
if s<>s2 then
ShowMessage( 'Fehler:' + s + '#' + s2 ) //<--- Wird aufgerufen
else
ShowMessage( s + '=' + s2 );
end;
NAME ist ein VARCHAR
und die Connection wird so geöffnet
Code:
with dbMain.Params do begin
Clear;
Add('Database=' + systemdirectory + 'wpdata.db' );
Add('DriverID=SQLite');
Add('SharedCache=False');
Add('LockingMode=Normal');
Add('StringFormat=
Unicode');
end;
Auffällig ist, dass in der Datenbank (*
DB) UTF8 steht, also UnicodeO£ABCÄÖÜ und offenbar hier das Omega bereits zu einem O wurde wogegen die Umlaute UTF8 sind.