Seite 1 von 1

Sonderzeichen wie € werden in DB nur in unicode gespeichert

Verfasst: 22.11.2013 13:15
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.

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

Verfasst: 22.11.2013 13:27
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

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

Verfasst: 23.11.2013 17:45
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

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

Verfasst: 26.11.2013 19:08
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

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

Verfasst: 26.11.2013 20:39
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