Einzelnen Beitrag anzeigen

jziersch

Registriert seit: 9. Okt 2003
Ort: München
240 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: SQLight, Unicode, UTF8 nicht korrekt

  Alt 4. Jun 2021, 09:35
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.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat