Sonderzeichen wie € werden in DB nur in unicode gespeichert

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
lenski
Beiträge: 3
Registriert: 22.11.2013 12:35

Sonderzeichen wie € werden in DB nur in unicode gespeichert

Beitrag von lenski »

Sonderzeichen wie € und andere werden in die Datenbanken PostgreSQL und SQLite mit einem
unicode-off-executable in UNICODE geschrieben und in ASCII gelesen, und zwar in den PB-Version 5.10-5.21.
Ein geschriebenes € wird als ? gelesen!

Ein unicode-executable wirft dagegen beim lesen ein € aus, und zwar auch dann, wenn es mit einem
unicode-off-executable geschrieben wurde.

In den Versionen 5.00 und davor wurden die Sonderzeichen mit einem unicode-off-executable in ASCII geschrieben
und in ASCII gelesen.
Diese können mit einem unicode-executable nicht korrekt gelesen werden, da sie an die Datenbanken in ASCII
übergeben wurden (korrekterweise).

Dieser Code funktioniert mit PB 5.00 auch im unicode-off-Modus, mit PB 5.10-5.21 nur im unicode-Modus:

Code: Alles auswählen

UseSQLiteDatabase()

OpenWindow(0, 0, 0, 300, 300, "", #PB_Window_SystemMenu)
StringGadget(1, 10, 10, 200, 20, "")
EditorGadget(2, 10, 40, 200, 100)

Define String.s
Define DatabaseFile.s = GetTemporaryDirectory()+"Database.txt"
CreateFile(0, DatabaseFile) : CloseFile(0)
OpenDatabase(0, DatabaseFile, "", "")

DatabaseUpdate(0, "CREATE TABLE test (name TEXT)")

DatabaseUpdate(0, "INSERT INTO test (name) VALUES ('€')")

If DatabaseQuery(0, "SELECT * FROM test")
   While NextDatabaseRow(0)
      String = GetDatabaseString(0, 0)
      Debug String
      SetGadgetText(1, String)
      SetGadgetText(2, String)
   Wend
   FinishDatabaseQuery(0)
EndIf

CloseDatabase(0)

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Ich habe den Fehler bereits im englischen Forum gepostet (am Montag den 18.11), habe bis heute jedoch
kein Feedback bekommen. In der Version 5.21 ist er immer noch drin.
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: Sonderzeichen wie € werden in DB nur in unicode gespeich

Beitrag von ts-soft »

bestätigt, selbes Problem hier unter Linux!
lenski hat geschrieben:und SQLite mit einem unicode-off-executable in UNICODE geschrieben und in ASCII gelesen, und zwar in den PB-Version 5.10-5.21.
Ein geschriebenes € wird als ? gelesen!
SQLite speichert grundsätzlich in UTF-8 und niemals in ASCII (nur so als Hinweis!)

Gruß
Thomas
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
lenski
Beiträge: 3
Registriert: 22.11.2013 12:35

Re: Sonderzeichen wie € werden in DB nur in unicode gespeich

Beitrag von lenski »

Danke für die Bestätigung (und für den Hinweis) - ich fing schon langsam an zu glauben, dass mich PB nicht mag.
Dann hoffen wir mal, dass da noch was passiert dies Jahr - hätte wenig Lust mein bisschen Volkshochschulenglisch
wieder zusammenkratzen zu müssen.

Gruß
Leo
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: Sonderzeichen wie € werden in DB nur in unicode gespeich

Beitrag von ts-soft »

Bug wird behoben, siehe: http://www.purebasic.fr/english/viewtop ... 79#p431679

Aber trotzdem im Hinterkopf behalten, ASCII kann nicht alle Unicode-Zeichen darstellen,
€, Umlaute usw. funktionieren dann zwar, aber es wird weiterhin ? bei einigen Zeichen
geben. Es gibt heutzutage eigentlich keinen Grund mehr, sein Programm nicht in
Unicode zu erstellen!

Gruß
Thomas
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
lenski
Beiträge: 3
Registriert: 22.11.2013 12:35

Re: Sonderzeichen wie € werden in DB nur in unicode gespeich

Beitrag von lenski »

Habe die Meldung mit Freude vernommen.
Danke für deine Unterstützung!
Bin bereits dabei, das Programm in Unicode umzustellen. Ich weiß allerdings noch nicht, was ich mit den Kunden
machen kann, bei denen die Datenbanken bereits unicode-off erstellt wurden. Ich werde sie wohl kaum ohne Verlust der besagten Sonderzeichen in Unicode umstellen können.

Gruß
Leo
Antworten