Encoding unverstanden

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
icho2099
Beiträge: 22
Registriert: Fr 21. Feb 2020, 19:17
OS, Lazarus, FPC: Win10/64
CPU-Target: 64 Bit
Wohnort: Osterholz-Scharmbeck

Encoding unverstanden

Beitrag von icho2099 »

Ich steh auf dem Schlauch, mal wieder ....

Ich lese Text aus Datenbanken, einmal mySQL, einmal MSSQL und schreibe diesen dann in SQLite.
Die Umlaute werden nicht richtig übernommen.
Breakpoint bei sdata :=

Code: Alles auswählen

Var
  sData : String;
begin
  sData := srcQuery.FieldByName('NAME1').AsString;
liefert im Debugger für sData: Archäology , wie es sein soll.

Code: Alles auswählen

  ...
  destQuery.ParamByName('NAME1').AsString := sData;
  destQuery.ExecSQL;
liefert in der SQlite aber Archäologie ab.

Welche Zeichenkonvertierung muss man da nehmen? Woran kann man das erkennen?
SQLite sollte doch eigentlich UTF8 verwenden. Das was aus den source Tabellen kommt wird im Debugger mit den
korrekten Umlauten angezeigt.
Ein StringReplace() wie folgt funktioniert natürlich, sind ja dann keine Umlaute mehr dabei

Code: Alles auswählen

  sData := StringReplace(sData , 'ä' , 'ae' , [rfReplaceAll]);
Aber bedeutet das nun, dass die gelesenen Zeichen UTF8 sind und für SQLite umkodiert werden müssen, oder sind die
gelesenen Zeichen kein UTF8 und müssen für SQLite in UTF8 gewandelt werden ?

Kann mir da jemand auf die Sprünge helfen bitte ?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6212
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Encoding unverstanden

Beitrag von af0815 »

Was kommt heraus, wenn du die Daten aus sqlite zurück in die Lazarusapp liest. Wenn es dann stimmt, so hat das Programm zur Anzeige der SQlite Daten ein Problem. Daher siehst du dasselbe wieder im Debugger.

Genau das ist jetzt die Frage.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

icho2099
Beiträge: 22
Registriert: Fr 21. Feb 2020, 19:17
OS, Lazarus, FPC: Win10/64
CPU-Target: 64 Bit
Wohnort: Osterholz-Scharmbeck

Re: Encoding unverstanden

Beitrag von icho2099 »

af0815 hat geschrieben:
Do 2. Mär 2023, 18:17
Was kommt heraus, wenn du die Daten aus sqlite zurück in die Lazarusapp liest. Wenn es dann stimmt, so hat das Programm zur Anzeige der SQlite Daten ein Problem. Daher siehst du dasselbe wieder im Debugger.

Genau das ist jetzt die Frage.
Wenn ich die Daten aus der SQLite mittels einer Query lese, dann erhalte ich ebenfalls die falschen Umlaute.

Aber ich habe etwas gefunden: ParamByName(..) hat auch eine Methode AsUTF8String, und wenn ich das beim Schreiben
verwende, dann landet es korrekt in der SQLite. Beim Lesen geht es dann mit AsString wie gewohnt.
Muss man sich halt dran gewöhnen.

Danke

icho2099
Beiträge: 22
Registriert: Fr 21. Feb 2020, 19:17
OS, Lazarus, FPC: Win10/64
CPU-Target: 64 Bit
Wohnort: Osterholz-Scharmbeck

Re: Encoding unverstanden

Beitrag von icho2099 »

Korrektur:

AsUTF8String ist natürlich ein Property von TParam

Antworten