Umlaute beim Zugriff auf SQLite3

Anfängerfragen zum Programmieren mit PureBasic.
pe-gdb
Beiträge: 3
Registriert: 28.12.2013 15:45

Umlaute beim Zugriff auf SQLite3

Beitrag von pe-gdb »

Ich habe eine DB erstellt, mit 'SQLAdmin' von SQLite, mit einer Table, die die Felder 'nr' und 'name' enthält.
Dabei habe ich in 'Name' eingegeben: 'ÄÖÜßäöü'.
Jetzt der Zugriff auf diese Daten:
Mit allen SQLite-Tools (SQLAdmin, SQLiteToolbox, SQLiteSpy und SQLite-Kommandozeile)
kommen die Umlaute korrekt!
Nur beim Zugriff mit dem mitgelieferten PureBasic-Editor und auch mit 'jaPBe' funktioniert es nicht - die Umlaute werden nicht bzw. falsch dargestellt: aus 'Müller' wird 'M'ller' usw.
An was kann das liegen?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Umlaute beim Zugriff auf SQLite3

Beitrag von ts-soft »

Ich weiß nicht, ob das bereits gefixed wurde, aber das Problem betrifft nicht alle PB-Versionen.
Teste also mal mit der aktuellen Version, einer älteren oder Compiliere im Unicode-Modus.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
pe-gdb
Beiträge: 3
Registriert: 28.12.2013 15:45

Re: Umlaute beim Zugriff auf SQLite3

Beitrag von pe-gdb »

Vielen Dank für die rasche Antwort.
Das, mit dem Compilieren im Unicode-Modus hört sich gut an.
...
Habe ich jetzt ausprobiert, mit folgendem Resultat:
Das Problem trat auf mit PureBasic 5.21. Jetzt habe ich es ausprobiert
mit Version 5.11 - hatte dasselbe negative Resultat.
Im 'Normalmode' ausgeführt erscheinen die Umlaute als Asc(63) und im Unicode
ausgeführt als Asc(65533), und zwar für alle Umlaute ä,ö,ü,Ä,Ö,Ü !

Mache ich denselben Versuch mit einem Delphi-Prog, da funktioniert es !
Verwendet PureBasic auch die 'SQLite3.dll' ?
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Re: Umlaute beim Zugriff auf SQLite3

Beitrag von Waldixxl »

Halo pe-gdb

Seit PB Version 5.11
- Aktualisiert: SQLite Version (3.7.15.2)
Walter
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.

Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Umlaute beim Zugriff auf SQLite3

Beitrag von ts-soft »

Das ganze hat nichts mit der verwendeten SQLite Version zu tun.
SQLite nutzt im normalfalle immer UTF-8. PB speichert aber in einigen
Versionen in ASCII und Unicode, was verkehrt ist. Fred wollte das wieder
korrigieren, finde den Beitrag aber im eng. Forum nicht.
Es macht keinen Sinn, wenn PB mal Ascii und mal Unicode verwendet, die
Datenbank sollte möglichst immer dieselben Ergebnisse liefern, wenn auch
unter ASCII Kompilierung einige wenige Zeichen verloren gehen.

Ich hab aber jetzt keine Zeit und Lust mir ein Testprogramm zu schreiben :mrgreen:

Gruß
Thomas

//edit
hier: http://www.purebasic.fr/english/viewtop ... 79#p431679
ist der Bugreport im engl. Forum!

Wichtig: Der Sourcecode in der IDE muß auch in UTF-8 gespeichert werden! Es gibt hier ja noch ein paar,
die ihre Sourcen immer noch in ASCII abspeichern und sich wundern, warum Unicode usw. nicht richtig
funktionieren.

Der Bug scheint aber noch nicht gefixed zu sein, nur im Unicode-Modus (+ UTF-8 -Source) kommen diese
Sonderzeichen korrekt.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

Re: Umlaute beim Zugriff auf SQLite3

Beitrag von sibru »

das hilft (nach jeder Leseoperation):

Code: Alles auswählen

Procedure.s SQL_Umlaute(Text$)      ;- SQL-Umlaut-Fehler korrigieren
  Protected Such$, Pos
  Protected Korr$ =  "Ä Ä Ã– Ö Ãœ Ü Ã¤ ä ö ö ü ü ß ß" ;jeweils Fehler- und Korrektur-Zeichenkette
  For Pos=1 To 13 Step 2
    Such$ = StringField(Korr$,Pos," ")
    Repl$ = StringField(Korr$,Pos+1," ")
    Text$ = ReplaceString(Text$, Such$, Repl$)
   Next 
  ProcedureReturn Text$
EndProcedure
Bild Bild
pe-gdb
Beiträge: 3
Registriert: 28.12.2013 15:45

Re: Umlaute beim Zugriff auf SQLite3

Beitrag von pe-gdb »

vielen Dank für Eure Mühen und Antworten.
Es ist tatsächlich so, daß PB für die Umlaute Unicode verwendet,
ansonsten ASCII.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Umlaute beim Zugriff auf SQLite3

Beitrag von ts-soft »

pe-gdb hat geschrieben:Es ist tatsächlich so, daß PB für die Umlaute Unicode verwendet,
ansonsten ASCII.
Leider nicht ganz korrekt. PB verwendet UTF-8 und liest im Unicode-Compiler-Mode auch UTF-8 zurück.
Aber im ASCII Mode, wird nicht als UTF-8 sondern als ASCII gelesen. Somit verschwinden nicht nur
alle reinen Unicode-Zeichen, was unvermeidbar ist, sondern auch diejenigen, die in beiden Zeichencodierungen
vorhanden sind, also Umlaute, Eurozeichen usw.

Bis das gefixed ist, würde ich meine Exe in Unicode erstellen, es gibt sowieso keinen Grund noch ASCII zu
nutzen und das Problem ist gelöst. Aber nicht vergessen, die IDE auch auf UTF-8 umzustellen, sonst macht
Unicode nicht unbedingt Sinn :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten