Seite 1 von 1
[ERLEDIGT] MySQL Abfrage aus PureBasic deutsche Umlaute
Verfasst: 03.03.2020 14:02
von basiszero
Hallo zusammen,
ich arbeite mit PurBasic in der Verson 5.71 LTS und mit einem MySQL-Server in der Version 5.0.12-dev - 20150407.
Hier der vollständigkeitshalber eine Beispielabfrage
Code: Alles auswählen
UseMySQLDatabase()
; Sie sollten einen Server als 'Localhost' laufen haben
;
If OpenDatabase(0, "host=123.187.131.1 port=3307 dbname=test", "test", "test")
If DatabaseQuery(0, "SELECT * FROM tab_test")
While NextDatabaseRow(0)
Debug GetDatabaseString(0, 0) + " " + GetDatabaseString(0, 1) + " " + GetDatabaseString(0, 2) + " " + GetDatabaseString(0, 3)
Wend
FinishDatabaseQuery(0)
Else
MessageRequester("Fehler", "Kann die folgende Abfrage nicht ausführen: "+DatabaseError())
EndIf
CloseDatabase(0)
Else
Debug "Verbindung fehlgeschlagen: "+DatabaseError()
EndIf
Mein Problem ist jetzt, egal welchen Zeichensatz/Kollation ich einstelle bzw. in der DB benutzte (UTF-8, ISO, Latin ),
es werden keine Umlaute korrekt aus der DB wiedergeben.
Abfragen z.B. über PHP oder HeidiSQL sind aber in Ordnung.
Das selbe habe ich nochmal mit einer Maria DB in der Version 10.4 ausprobiert, leider mit dem selben Ergebnis.
Hat jemand ne Idee ??
Bin für jeden Tip dankbar

Re: MySQL Abfrage aus PureBasic keine deutschen Umlaute
Verfasst: 03.03.2020 15:46
von hoerbie
Hi,
ich hab noch nix mit den Database-Funktionen von PB gemacht, aber viel mit Php/Perl/MySql und unterschiedlichsten DBs dort. Da hilft meist bei Umlaut-Problemen direkt nach dem Connect ein Befehl wie
SET NAMES latin1
oder
SET NAMES utf8
Hast Du explizit für die aus PB aufgebaute Verbindung schon versucht, den gewünschten Zeichensatz so zu setzen, oder nur direkt im MySql rumgestellt?
Gruß, hoerbie
Re: MySQL Abfrage aus PureBasic keine deutschen Umlaute
Verfasst: 03.03.2020 16:02
von basiszero
Hallo hoerbie,
Danke für deine Info, aber laut mysql.ini sieht für meine Begriffe alles gut aus, oder ?
Code: Alles auswählen
[client]
default-character-set=UTF8
[mysqladmin]
user=root
port=3307
# The MySQL server
[mysqld]
# set basedir to your installation path
basedir="D:/Bitnami/wampstack-7.3.13-0/mysql"
# set datadir to the location of your data directory
datadir="D:/Bitnami/wampstack-7.3.13-0/mysql/data"
port=3307
max_allowed_packet=32M
#bind-address=127.0.0.1
bind-address=0.0.0.0
expire_logs_days=7
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB
log-error="D:/Bitnami/wampstack-7.3.13-0/mysql/data/mysqld.log"
default-authentication-plugin=mysql_native_password
[mysqldump]
max_allowed_packet=32M
[mysql]
port=3307
Re: MySQL Abfrage aus PureBasic keine deutschen Umlaute
Verfasst: 03.03.2020 19:05
von #NULL
Auch überprüfen, ob der Font des Debug-Fensters die Zeichen überhaupt darstellen kann.
Re: MySQL Abfrage aus PureBasic keine deutschen Umlaute
Verfasst: 03.03.2020 19:43
von mk-soft
Habe hier keine Probleme mit Umlauten.
PB: v5.71 (x64)
Buffalo NAS:
MySQL-Server v5.0.70
MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Code: Alles auswählen
;-TOP
;IncludeFile "mysql.pbi"
; ---------------------------------------------------------------------------------------
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
Procedure.s GetAppPath()
Protected bundlePathPtr = CocoaMessage(0,CocoaMessage(0,CocoaMessage(0,0,"NSBundle mainBundle"),"bundlePath"),"UTF8String")
If bundlePathPtr
Protected bundlePath.s = PeekS(bundlePathPtr,-1,#PB_UTF8) + "/"
EndIf
ProcedureReturn bundlePath
EndProcedure
; ---------------------------------------------------------------------------------------
Procedure.s GetResourcePath()
Protected bundlePathPtr = CocoaMessage(0,CocoaMessage(0,CocoaMessage(0,0,"NSBundle mainBundle"),"resourcePath"),"UTF8String")
If bundlePathPtr
Protected bundlePath.s = PeekS(bundlePathPtr,-1,#PB_UTF8) + "/"
EndIf
ProcedureReturn bundlePath
EndProcedure
; ---------------------------------------------------------------------------------------
libdb.s = GetAppPath() + "Contents/Library/libmariadb.dylib"
If UseMySQLDatabase(libdb) = 0
Debug "Error MySQL"
End
EndIf
CompilerElse
If UseMySQLDatabase() = 0
Debug "Error MySQL"
End
EndIf
CompilerEndIf
UseSQLiteDatabase()
Procedure CheckDatabaseUpdate(Database, Query$)
Result = DatabaseUpdate(Database, Query$)
If Result = 0
Debug "Error Update: " + DatabaseError() + #LF$ + Query$
EndIf
ProcedureReturn Result
EndProcedure
Procedure CheckDatabaseQuery(Database, Query$)
Result = DatabaseQuery(Database, Query$)
If Result = 0
Debug "Error Query: " + DatabaseError() + #LF$ + Query$
EndIf
ProcedureReturn Result
EndProcedure
database.s = "host=server port=3306 dbname=developer"
user.s = "user"
pass.s = "*"
CompilerIf Defined(PB_Database_MySQL, #PB_Constant) = 0
#PB_Database_MySQL = 4
CompilerEndIf
If OpenDatabase(0, database, user, pass, #PB_Database_MySQL)
CheckDatabaseUpdate(0, "CREATE TABLE IF NOT EXISTS food (name CHAR(50), weight INT)")
CheckDatabaseUpdate(0, "DELETE FROM food")
CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('apple äöü', '12')")
CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('pear', '5')")
CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('banana', '25')")
If CheckDatabaseQuery(0, "SELECT * FROM food WHERE weight > 0")
While NextDatabaseRow(0)
Debug "Food = " + GetDatabaseString(0, 0) + " Weight = " + GetDatabaseLong(0, 1)
Wend
FinishDatabaseQuery(0)
EndIf
CloseDatabase(0)
Else
Debug "Can't open database !"
CallDebugger
EndIf
Re: MySQL Abfrage aus PureBasic keine deutschen Umlaute
Verfasst: 04.03.2020 08:55
von basiszero
Guten Morgen,
herzlichen Dank für die Rückmeldungen....
Nach längeren testen gestern kam ich zu einer "verrückten" Feststellung.
Ich habe mit PhpMyAdmin, mit dem Mysql-Consolen -Client und PureBasic Eingaben
mit Umlauten in die DB geschrieben.
Jedes Programm gab auch die Umlaute korrekt wieder zurück, aber...
Wenn ich die Ddaten z.B. von einem PB Eintrag in der MySQL Console ausgeben lassen stimmen die Umlaute
schon nicht mehr. Also mit anderen Worten, Umlaute werden nur richtig dargestellt, wenn das Eingabe- und
Ausgabeprogramm das selbige ist.
Ich denke somit hat die Frage hier im Forum eigentlich nichts zu suchen. Sorry...
Wenn aber jemand dazu ne Idee hat, wäre natürich super....

Re: MySQL Abfrage aus PureBasic keine deutschen Umlaute
Verfasst: 04.03.2020 15:44
von hoerbie
Generell sieht Deine Konfiguration mit dem [client] usw. nicht verkehrt aus. Trotzdem könnte es sein, daß Dir auf PB-Ebene oder den von PB genutzten Funktionen irgendwas dazwischenfunkt, insbesondere wenn ich die Windows-Pfade sehe...
Ich würde an Deiner Stelle also wirklich nach dem Verbindungsaufbau in PB nochmal eine explizite Angabe des gewünschten Zeichensatzes probieren mit den von mir genannten Befehlen, die solltest Du mittels
o.Ä. an sich nutzen können.
Und dann wirklich wie von #Null angeregt auch drauf achten, wo Du die erhaltenen Daten ausgibst, im Debug-Fenster könnte es da trotz an sich korrekt erhaltenen Daten auch noch Ausgabefehler geben.
Ansonsten solltest Du mal konkret zeigen, was Du denn in PB aus offensichtlich von anderen Tools korrekt gesetzten/eingelesenen Umlauten zurück bekommst, oder wie von PB gesetzte Umlaute in den anderen Tools angezeigt werden.
Re: MySQL Abfrage aus PureBasic keine deutschen Umlaute
Verfasst: 05.03.2020 09:07
von basiszero
Guten Morgen hoerbie,
da wird ja der Hund in der Pfanne verrückt...
Du hast Recht, mit deinem Eintrag hat das Ganze jetzt funktioniert
Von der Logik her für mich nicht wirklich nachvollziehbar, aber... EGAL!!
Herzlichen Dank für deine Hilfe !!!!

Re: [ERLEDIGT] MySQL Abfrage aus PureBasic deutsche Umlaute
Verfasst: 04.04.2021 14:37
von babelfish
na halleluja ...
Das selbige Problem hatte ich auch - aber dachte das wäre es spezifisches OSX-Problem.
viewtopic.php?f=28&t=31318&p=359447#p359447