AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

SQLite verfälscht Umlaute

Ein Thema von sko1 · begonnen am 10. Feb 2017 · letzter Beitrag vom 10. Feb 2017
Antwort Antwort
Seite 1 von 2  1 2   
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

SQLite verfälscht Umlaute

  Alt 10. Feb 2017, 07:53
Datenbank: SQLite • Version: 3.5.1 • Zugriff über: TFDQuery
Hallo,

ich habe einen "komischen Effekt":

folgende Anweisung:

'INSERT INTO material VALUES (''001'',''001985'',''ELZUBEHOER'',''Hakennägel 50 mm'',''St'',0.02,0.02,0.02,'''') '

ergibt in der Datenbank, wenn ich sie mit SQLite-Admin ansehe den Text 'Hakennägel 50 mm', die Umlaute sind also kaputt, nur warum bzw. was muss ich wo umstellen dass die Umlaute korrekt eingetragen werden?

Setze ich ein einzelnes Feld per
FDQUery.FieldByName('Name').asString := 'Lieschen Müller"

stehen da die Umlaute korrekt drin!

Ciao
Stefan

Nachtrag:
falls es wichtig ist, die Erzeugung der Tabelle:

'CREATE TABLE material (lief VARCHAR(3),matnr VARCHAR(20),such VARCHAR(30),kurztext VARCHAR(80),me VARCHAR(5),vk1 DECIMAL(10,2),vk2 DECIMAL(10,2),vk3 DECIMAL(10,2),langtext TEXT) '

Geändert von sko1 (10. Feb 2017 um 08:00 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: SQLite verfälscht Umlaute

  Alt 10. Feb 2017, 08:24
Hallo,
Hakennägel

Das ist Unicode.

Da ich mich mit SQLite nicht auskenne, kann ich nicht mehr dazu sagen als "Immer Parameter benutzen".
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.275 Beiträge
 
Delphi 12 Athens
 
#3

AW: SQLite verfälscht Umlaute

  Alt 10. Feb 2017, 08:24
Moin...
Zitat:
'INSERT INTO material VALUES (''001'',''001985'',''ELZUBEHOER'',''Hakennägel 50 mm'',''St'',0.02,0.02,0.02,'''') '
...bitte nicht. Die Hochkommaorgie ist nicht mehr uptodate. Hast du schon mal was von SQL Injection gehört? https://de.wikipedia.org/wiki/SQL-Injection
Zitat:
FDQUery.FieldByName('Name').asString := 'Lieschen Müller"
...korrekt ohne Probleme, warum drüber nachdenken?

Geändert von haentschman (10. Feb 2017 um 08:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: SQLite verfälscht Umlaute

  Alt 10. Feb 2017, 08:28
wenn ich sie mit SQLite-Admin ansehe den Text 'Hakennägel 50 mm', die Umlaute sind also kaputt, nur warum bzw. was muss ich wo umstellen dass die Umlaute korrekt eingetragen werden?
Sind nicht "richtig" kaputt sondern du hast mit deinen Zugriffskomponenten ein (UTFCodierungsprobleme.

Kann es sein das deine DB eine ANSI-Codierung verwendet und die FireDacs auf UTF8 eingestellt sind?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: SQLite verfälscht Umlaute

  Alt 10. Feb 2017, 08:46
Danke erst mal für die Antworten!

Zitat:
Kann es sein das deine DB eine ANSI-Codierung verwendet und die FireDacs auf UTF8 eingestellt sind?
Wo kann ich das erkennen und wie kann ich es umstellen?

Zitat:
Hast du schon mal was von SQL Injection gehört?
Ja irgendwie ganz weit weg...
Wo aber soll das Problem sein, es ist eine kleine Datenbank auf dem Handy die ein paar Benutzereingaben speichert...

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.275 Beiträge
 
Delphi 12 Athens
 
#6

AW: SQLite verfälscht Umlaute

  Alt 10. Feb 2017, 09:10
Hallöle...
Zitat:
Wo aber soll das Problem sein, es ist eine kleine Datenbank auf dem Handy die ein paar Benutzereingaben speichert...
...was kostet es mehr wenn man es gleich richtig macht.

PS: Hinterlege mal deine Delphi Version im Profil... Danke.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: SQLite verfälscht Umlaute

  Alt 10. Feb 2017, 09:45
Delphi-Version ist im Profil hinterlegt

Was mir jetzt noch aufgefallen ist:
Im SQLite-Admin sind die Umlaute falsch, DB-Browser for SQLite richtig!

Lese ich aber den Inhalt eines Feldes (FDQuery.FieldByName('Benutzer').asString) aus kommen die falschen Umlaute zurück...

Ciao
Stefan
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: SQLite verfälscht Umlaute

  Alt 10. Feb 2017, 10:02
Es kommt noch schlimmer:

Nach dem Import der Daten (sie oben INSERT...) steht in der Datenbank
"Hakennägel 50 mm"

lese ich das aus sieht es im Debugger in der IDE sauber aus ("Hakennägel") und schreibe genau dieses wieder woanders in die Datenbank, wird daraus

"Hakennägel 50 mm"

Der DB Browser für SQLite zeigt an dieser Stelle
"Hakennägel 50 mm"

an.

Ich kenne mich bei der ganzen Codepage-Geschichte nicht aus und brauche dringend Hilfe!

Ich mach scheinbar generell etwas falsch, aber was?

Ciao
Stefan

Geändert von sko1 (10. Feb 2017 um 10:08 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: SQLite verfälscht Umlaute

  Alt 10. Feb 2017, 10:16
Es gibt wahrscheinlich keinen Zaubertipp, mit dem auf einen Schlag alles richtig erscheint.

Problematik:
Jedes Tool (kann) macht es anders mit der Codierung.
Je mehr Varianten Du probierst, desto mehr Varianten werden Dir vermutlich angezeigt.
Prinzip: Ein Tool, eine Codierung, writeToDB, readFromDB, eine Codierung, Ausgabe (Darstellung) entspricht Eingabe.

Dieses Prinzip kann bereits gebrochen werden, wenn das eine Tool eine ungewöhnliche, falsche Codierung verwendet, die andere Tools nicht können/unterstützen.

Um aus der Nummer rauszukommen, startest Du mit einer leeren SQLite Datei und einem ordentlichen Tool. Datenbefüllung durchführen, Codierung prüfen, Abruf prüfen.

Wenn das richtig und konstitent ist und auch für wirkliche Unicode Zeichen funktioniert, dann hängst Du Dein Programm dran.
Verdächtig in dem Programm sind jegliche Codeteile, die "manuelles" Stringhandling machen, aber singlebyte basiert sind.
Außerdem verdächtig sind Darstellungen, die keine Unicode fähigen Anzeigekomponenten und Character Sets(!) verwenden.
Letzteres bedeutet nur, dass zwar alles richtig verarbeitet wird, die reine Darstellung in Deinem Programm aber nicht funktioniert.
Gruß, Jo
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: SQLite verfälscht Umlaute

  Alt 10. Feb 2017, 10:21
Nun ja, im Prinzip habe ich das ja nun mehrfach durch

- leere Datenbank
- Füllen per viele "INSERT..." in meinem Programm
- Lesen aus der Datenbank (Debugger zeigt "Hakennägel")
- Schreiben von "Hakennägel"
- zurücklesen "Hakennägel"

alles mit der gleichen TFDConnection und TFDQuery

Ciao
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz