Sonderzeichen im Stringgadet
Sonderzeichen im Stringgadet
Hallo Leute,
wenn ich Daten aus der Datenbank hole (STICHWORT$= GetDatabaseString(DB,1)), dann werden mir die Zeichen "€,@" als "?" im Stringgadget und Listicon angezeigt.
Weiss jemand warum!?
Gruss ... Velindos
wenn ich Daten aus der Datenbank hole (STICHWORT$= GetDatabaseString(DB,1)), dann werden mir die Zeichen "€,@" als "?" im Stringgadget und Listicon angezeigt.
Weiss jemand warum!?
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
- 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 im Stringgadet
Schalt mal zwischen ASCII und UTF-8 um (im Datei-Menü der IDE).
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Sonderzeichen im Stringgadet
Wenn selbst das @ (was ja reines Ascii ist) als ? angezeigt wird, dann liegt wohl er ein encoding problem in der Datenbank vor.
In welchem Format liegen denn die Strings in der Datenbank vor? Dort gibt es ja hunterte.
Hast du STICHWORT$ schon mal im ShowMemoryViewer() angeguckt, welche Numbern dadrin stehen.
Vielleicht ist es auch ein Problem des Systems? Ascii/Unicode exe ?
In welchem Format liegen denn die Strings in der Datenbank vor? Dort gibt es ja hunterte.
Hast du STICHWORT$ schon mal im ShowMemoryViewer() angeguckt, welche Numbern dadrin stehen.
Vielleicht ist es auch ein Problem des Systems? Ascii/Unicode exe ?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Sonderzeichen im Stringgadet
Hallo,
danke für die Tips.
Tip1: Umstellen auf UTF8 ergibt Chaos im Code
Programm lässt sich nicht mehr starten!
Tip2: Abfrage des Buffer, kann ich nicht!
Habe Stichwort$ Variable und keine Memory
Nun habe die Sache eingegrenzt in folgende Schritte:
Gruss ... Velindos
danke für die Tips.
Tip1: Umstellen auf UTF8 ergibt Chaos im Code
Programm lässt sich nicht mehr starten!
Tip2: Abfrage des Buffer, kann ich nicht!
Habe Stichwort$ Variable und keine Memory
Nun habe die Sache eingegrenzt in folgende Schritte:
Anscheinend übernimmt die Datenbank das Zeichen "€" nicht! Die anderen Zeichen werden übernommen!Schreiben in DB= Notiz @ ³ ² €
Lesen von DB= Notiz @ ³ ² ?
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Sonderzeichen im Stringgadet
Hallo Leute,
habe noch ein Problem. Folgende Sonderzeichen stellt PB im Editorgadget dar:
☑Kästchen mit Hacken
✎Bleistift
✔Häckchen
☒Kästchen mit X
Leeres Kästchen
Nun wie bekomme ich diese im Webgadget dargestellt, keine Ahnung?
Gruss ... Velindos
habe noch ein Problem. Folgende Sonderzeichen stellt PB im Editorgadget dar:
☑Kästchen mit Hacken
✎Bleistift
✔Häckchen
☒Kästchen mit X
Leeres Kästchen
Nun wie bekomme ich diese im Webgadget dargestellt, keine Ahnung?
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Sonderzeichen im Stringgadet
Klar kann der Editor diese Zeichen darstellen, allerdinst musst du vorher die IDE/file auf UTF-8 umstellen und einen unicodefähigen Zeichensatz nutzen.
Es wäre ganz gut, wenn du einen reduzierten Code deines Problems zeigen kannst.
Welchen Zeichensatz hast du denn bei der Erstellung deiner Datenbank benutzt?Velindos hat geschrieben:Anscheinend übernimmt die Datenbank das Zeichen "€" nicht! Die anderen Zeichen werden übernommen!
Es wäre ganz gut, wenn du einen reduzierten Code deines Problems zeigen kannst.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Sonderzeichen im Stringgadet
Hallo Stargate,
die Datenbank wird wie folgt angelegt:
Der eingestellte Zeichensatz in Purebasic ist "Calibri", andere Einstellung kenne ich nicht.
Habe die Sache auf UTF8 kopiert und getestet, hat sich nichts verändert. Was ich nicht verstehe, dass die Sonderzeichen aus dem Editorgadget korrekt gespeichert und angezeigt werden, hingegen die Sonderzeichen aus dem Stringgadget das "€"-Zeichen nicht darstellen! Ist doch die selbe Datenbank bzw.Tabelle.
Gruss ... Velindos
__________________________________________________
Code-Tags hinzugefügt
26.09.2013
RSBasic
die Datenbank wird wie folgt angelegt:
Code: Alles auswählen
If OpenDatabase(DB, DatabaseFile$, "", "", #PB_Database_SQLite)
DatabaseUpdate(DB, "Create Table Velindos (ID INTEGER PRIMARY KEY AUTOINCREMENT, Stichwort TEXT,Notiz TEXT)")
EndIf
Habe die Sache auf UTF8 kopiert und getestet, hat sich nichts verändert. Was ich nicht verstehe, dass die Sonderzeichen aus dem Editorgadget korrekt gespeichert und angezeigt werden, hingegen die Sonderzeichen aus dem Stringgadget das "€"-Zeichen nicht darstellen! Ist doch die selbe Datenbank bzw.Tabelle.
Gruss ... Velindos
__________________________________________________
Code-Tags hinzugefügt
26.09.2013
RSBasic
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Sonderzeichen im Stringgadet
Mit Zeichensatz meine ich: ascii_general_ci, latin1_german1_ci, utf8_general_ci usw.
Also wie die Daten gespeichert werden, und wie Texte zB sortiert werden aäbcdeèéêfg... oder abcdefgäèéê
Nun weiß ich immer noch nicht, was du bei der Datenbank eingestellt hast (Set character set) und ich bin auch kein SQL experte, aber ich vermute in der Datei DatabaseFile$, wird das Eurozeichen als UTF8-Codierung gespeichert, also als: "â‚" wenn man es als ascii ließt.
Was ich nun festgestellt habe ist, dass dieser Code mit €-Zeichen nur mit IDE-utf8 und EXE-Unicode läuft:
Das €-Zeichen ist nunmal kein Teil des ASCII-Bereichs, und wird nur deshalb in ASCII als 128 angezeigt, weil der richtige Zeichensatz verwendet wird (latin german1 zB.).
Ansonsten ist das €-Zeichen 8364 also außerhalb der ASCII-Range.
Daher muss UTF8 in der PB Datei und Unicode in der EXE eingestellt werden, oder halt der Zeichensatz der Datenbank angepasst werden.
Also wie die Daten gespeichert werden, und wie Texte zB sortiert werden aäbcdeèéêfg... oder abcdefgäèéê
Nun weiß ich immer noch nicht, was du bei der Datenbank eingestellt hast (Set character set) und ich bin auch kein SQL experte, aber ich vermute in der Datei DatabaseFile$, wird das Eurozeichen als UTF8-Codierung gespeichert, also als: "â‚" wenn man es als ascii ließt.
Was ich nun festgestellt habe ist, dass dieser Code mit €-Zeichen nur mit IDE-utf8 und EXE-Unicode läuft:
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 latin1)")
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
Ansonsten ist das €-Zeichen 8364 also außerhalb der ASCII-Range.
Daher muss UTF8 in der PB Datei und Unicode in der EXE eingestellt werden, oder halt der Zeichensatz der Datenbank angepasst werden.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- 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 im Stringgadet
SQLite verwendet normallerweise immer UTF-8!
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Sonderzeichen im Stringgadet
Hallo Stargate,
besten Dank für deine Hilfe. Die Sache läuft wenn ich meinen Compiler auf deine Vorgabe einstelle. Besten Dank für die Unterstützung, das Forum ist einfach SPITZE!
Gruss ... Velindos
besten Dank für deine Hilfe. Die Sache läuft wenn ich meinen Compiler auf deine Vorgabe einstelle. Besten Dank für die Unterstützung, das Forum ist einfach SPITZE!
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)