Laden...

SELECT Dateiname INTO DUMPFILE Dateipfad - Umlaute werden nicht richtig dargestellt

Erstellt von Rainer vor 5 Jahren Letzter Beitrag vor 5 Jahren 2.116 Views
R
Rainer Themenstarter:in
85 Beiträge seit 2005
vor 5 Jahren
SELECT Dateiname INTO DUMPFILE Dateipfad - Umlaute werden nicht richtig dargestellt

verwendetes Datenbanksystem: MySQL 5.7

Hallo,
ich habe in einem LONGBLOB-Feld einer Tabelle eine Datei gespeichert. In einem VARCHAR-Feld ist der Name dieser Datei gespeichert. Mit
SELECT dateiname INTO DUMPFILE dateipfad
will ich die Datei im NTFS-Filesystem des Clients speichern. Das funktioniert soweit ganz gut. Wenn aber der Dateiname Umlaute (ä,ö,ü) enthält, dann werden diese durch cryptische Zeichen im NTFS-Filesystem dargestellt. In der MySQL-Tabelle sind die Umlaute in der üblichen Form als ä, ö oder ü zu sehen.
Einstellung der Systemvariablen in der my.ini:

character-set-server=utf8
character-set-filesystem=utf8
character-set-connection=utf8

Ich habe eine Menge rumprobiert, aber keine Lösung gefunden. Hat jemand eine Idee?

Gruß, Rainer

H
523 Beiträge seit 2008
vor 5 Jahren

Kannst Du bitte ein Beispiel posten, wie die Umlaute genau dargestellt werden?

R
Rainer Themenstarter:in
85 Beiträge seit 2005
vor 5 Jahren

Hallo hypersurf,

das sieht zum Beispiel so aus:

statt
Ergänzungen und Korrekturen in MySQL mit PHP.pdf

wird
Ergänzungen und Korrekturen in MySQL mit PHP.pdf

eingetragen.

Gruß Rainer

A
764 Beiträge seit 2007
vor 5 Jahren

SELECT dateiname INTO DUMPFILE dateipfad

Hallo Rainer

Es kann sein, dass du in deinem SQL INTO Statement noch das encoding separat rein machen musst. Mit sowas wie 'CHARACTER SET UTF8'.

Gruß
Alf

R
Rainer Themenstarter:in
85 Beiträge seit 2005
vor 5 Jahren

Hallo Alf Ator,

vielen Dank für deinen Lösungsvorschlag. Ich werde es probieren. Die Sache wird vielleicht dadurch nicht ganz einfach, weil ich die SELECT-Anweisunf komplett als String definiere und anschließend an den MySqlDataAdapter übergebe.

Gruß Rainer

P
441 Beiträge seit 2014
vor 5 Jahren

Du kannst bei MySQL das Encoding der Verbindung angeben.
Dazu einfach nach dem Aufbau der Verbindung das Encoding per Query setzen.
Siehe auch: https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html

R
Rainer Themenstarter:in
85 Beiträge seit 2005
vor 5 Jahren

Hallo Papst,

danke für deinen Hinweis. Wo soll ich nach erfolgreicher MySQL-Connection die SET-Anweisung für Character Set Connection geben? Ich arbeite mit MySqlDataAdapter. Dem kann ich nur eine komplette Anweisung (SELECT, UPDATE, DELETE) übergeben, aber keine SET-Anweisung. In der my.ini habe ich für den Client character-set-connection=utf8 festgelegt. Das hat aber mein Problem nicht gelöst.

Gruß, Rainer

P
441 Beiträge seit 2014
vor 5 Jahren

Mit einem MySqlCommand

R
Rainer Themenstarter:in
85 Beiträge seit 2005
vor 5 Jahren

Hallo Papst,

ich habe nach der Connection eine Query (SET character_set_connection = UTF8) abgesetzt. Hat aber leider nichts gebracht. Das Problem ist mit MySQL 5.1 nicht aufgetreten, sondern erst nach der Migration von MySQL 5.1 auf MySQL 5.7.

Trotzdem vielen Dank für deine Mühe.
Gruß Rainer

P
441 Beiträge seit 2014
vor 5 Jahren

Hi,

passt denn die Collation der Datenbank und die des Feldes?

Ich habe ehrlicherweise mit .NET immer vermieden mit MySQL zu arbeiten - jedesmal, wenn ich es machen musste gab es Probleme, die es mit anderen DBMS nicht gibt.
Vielleicht kannst du mal in den Sourcen von PHP schauen, was die an die DB senden, beim Aufruf von http://php.net/manual/de/mysqli.set-charset.php

H
523 Beiträge seit 2008
vor 5 Jahren

Wir geben im Connection-String immer das Attribut Unicode mit:

DbConnectionStringBuilder sb = this._DbFactory.CreateConnectionStringBuilder();
sb.Add("Unicode", true);

Wir nutzen den Provider Devart.Data.MySql: https://www.devart.com/dotconnect/mysql/docs/Devart.Data.MySqlDevart.Data.MySql.MySqlConnectionConnectionString.html

R
Rainer Themenstarter:in
85 Beiträge seit 2005
vor 5 Jahren

Hallo an alle, die Lösungsvorschläge gemacht haben!

Ich habe alles versucht das Problem zu lösen und dabei alle Vorschläge von euch ausprobiert. Es hat leider nichts gebracht. Ich sehe jetzt nur noch eine Lösung darin, dass ich alle Dateinamen (es geht bei mir um eine selbst geschriebene Dokument-Verwaltung), in denen Umlaute enthalten sind, die Umlaute durch jeweils 2 Buchstaben ersetze. Diese Lösung gefällt mir zwar überhaupt nicht, aber ich muss auch weiterkommen.
Nochmals vielen Dank für eure Lösungsvorschläge.

Gruß von Rainer aus Panketal (Bundesland Brandenburg)