SQLite Unicode Problem

Anfängerfragen zum Programmieren mit PureBasic.
Orbod
Beiträge: 1
Registriert: 28.02.2007 22:34
Wohnort: Soest Holland

SQLite Unicode Problem

Beitrag von Orbod »

Hi,

Bin neu hier (habe mich heute angemeldet) aber habe mich schon zwei Monate mit PB amüsiert und finde es ganz toll (Prozeduren und kein OOP). Jetzt habe ich folgendes Problem. Ich benutze PB mit SQLite und die interface funktioniert einwandfrei. Aber da das Program Unicode enabled sein soll (den schalster ist auch gesetzt), kriege ich von SQLite eine sonderbare Fehlermeldung, die aus Fragezeigen besteht. Ich denke das das verursacht wird durch die PBOSL lib die aus 2005 ist und vielleicht nicht Unicode enabled compiliert ist.

Stimmt das? Und was macht man dann?

Peter
X86 PureBasic 4.02 PBOSL
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

Beitrag von ts-soft »

Es gibt zur Zeit keine SQLite Userlib mit Unicode Support.

Die vor kurzem upgedatete Version unterstützt das Standard-Format von SQLite, nämlich UTF-8

Den Source laden, einbinden, deine Strings per PokeS nach UTF-8 wandeln
und übergeben.

Wenn Du noch fragen hast, das denke ich mal, stelle sie bitte einfach, bin
nämlich zu Faul hier einen Roman zu schreiben, manches wirste
wahrscheinlich selber rausfinden :wink:

Gruß
Thomas

PS:
Für echten Unicode-Support (UTF-8 sollte reichen) mußte die Proceduren
abändern, so das die auf die Funktion in der DLL mit 16 am ende
verweisen, aber ich denke das wird nicht nötig sein.
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
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

Beitrag von ts-soft »

Hier mal eine kleine Procedure um Strings in UTF-8 umzuwandeln, nicht vom
Namen irritieren lassen, das funktioniert auch unter Unicode!

Code: Alles auswählen

Procedure.s AsciiToUTF8(Input$)
  Buffer$ = Space(StringByteLength(Input$, #PB_UTF8))
  PokeS(@Buffer$, Input$, -1, #PB_UTF8)
  ProcedureReturn Buffer$
EndProcedure

Text.s = "Hallo öäüß"

Text_UTF8.s = AsciiToUTF8(Text)

;Debug Text_UTF8; Hallo öäüß im ASCII Modus, ??????? im Unicode Modus

Debug PeekS(@Text_UTF8, -1, #PB_UTF8)
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