LabVIEWForum.de
MySQL-Datenbankzugriff und Sonderzeichen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: MySQL-Datenbankzugriff und Sonderzeichen (/Thread-MySQL-Datenbankzugriff-und-Sonderzeichen)



MySQL-Datenbankzugriff und Sonderzeichen - dummyuser - 05.10.2016 15:01

Hallo!

Ich möchte auf den "Native LabVIEW TCP/IP Connector for mySQL Database" umstellen, um auf meine Datenbanken zuzugreifen.
Funktioniert auch soweit Alles ganz gut, nur habe ich ein Problem bei Tabellenfeldern in denen ein Text mit Sonderzeichen/Umlauten eingetragen ist. Hier werden Umlaute in den Textfeldern (vom SQL-Typ CHAR(..)) in LabView nicht richtig zurückgegeben.
Beispiel Feldinhalt: Prüfer Müller
Wird ausgegeben als: Prüfer Müller
Die Datenbank-Kollation: utf8_bin

Anmerkung: In PhPMyAdmin sehe ich die korrekte Darstellung. Auch mit Hilfe des ODBC-Treibers des NI-Database-Tool bekomme die Daten korrekt formatiert zurück.

Hat jemand ein Idee?
Danke im Voraus


RE: MySQL-Datenbankzugriff und Sonderzeichen - rolfk - 09.10.2016 02:31

(05.10.2016 15:01 )dummyuser schrieb:  Hallo!

Ich möchte auf den "Native LabVIEW TCP/IP Connector for mySQL Database" umstellen, um auf meine Datenbanken zuzugreifen.
Funktioniert auch soweit Alles ganz gut, nur habe ich ein Problem bei Tabellenfeldern in denen ein Text mit Sonderzeichen/Umlauten eingetragen ist. Hier werden Umlaute in den Textfeldern (vom SQL-Typ CHAR(..)) in LabView nicht richtig zurückgegeben.
Beispiel Feldinhalt: Prüfer Müller
Wird ausgegeben als: Prüfer Müller
Die Datenbank-Kollation: utf8_bin

Anmerkung: In PhPMyAdmin sehe ich die korrekte Darstellung. Auch mit Hilfe des ODBC-Treibers des NI-Database-Tool bekomme die Daten korrekt formatiert zurück.

Hat jemand ein Idee?
Danke im Voraus

Du hast Dir schon selber die Antwort gegeben. Da kommt Unicode UTF8 durch. LabVIEW kennt aber nur ASCII 8 Bit, mehr spezifisch wahrscheinlich Windows Codepage 1252 das in Englisch und West europäischen Sprachen verwendet wird.

Wenn Du die native Library verwendest kommt der String einfach so wie er in der Datenbank ist. UTF8 verwendet eine recht komplexe Codierung wo fast alle Character ausser den normalen englischen Character und Zahlen und normaler Interpunktion in mehr dann einem Byte dargestellt werden. Dazu gehören auch die deutschen Umlaute.

Wenn Du dagegen den ODBC Treiber verwendest, konvertiert der intern UTF8 nach der default UTF16 Codierung in Windows. Da LabVIEW als ASCII Application nur ASCII Strings verarbeitet ruft es aber die ASCII ODBC Funktionen auf die ihrerseits den UTF16 String in die aktuelle Windows Codepage konvertieren, so dass es in LabVIEW richtig aussieht. Wenn die Datenbank aber dann Character enthält die die aktuelle Codepage nicht kennt, kommt auch durch den ODBC Treiber an dieser Stelle nur ein Fragezeichen an.