Zum Inhalt springen

MySQL + Windows UND deutsche Umlaute ?!


Flori

Empfohlene Beiträge

Hallo,

habe da irgendwie ein Problem mit MySQL und der Aufnahme von Zeichenketten mit deutschen Umlauten (ä, ö, ü, ß,....) :

Gebe ich Werte direkt mit dem MySQL-Client (mysql.exe) über ein Fenster unter Windows ein (also über die command.com oder die cmd.exe), dann gibts überhaupt keine Probleme :

INSERT INTO namen

VALUES

("Bäcker"),

("Müller");

->> Ergebnis : Die Umlaute werden entsprechend eingetragen !

Aber benutze ich die LOAD DATA INFILE-Anweisung und importiere eine vorher mit dem Editor (notepad.exe) oder dem Textpad erstellte Text-Datei gibt es Probleme mit den Umlauten :

Mit dem Windows-Editor gibts ja schon direkt das Problem mit dem Zeilenumbruch, welches sich aber mit dem Textpad umgehen ließe, indem man die Datei als Unix-Dateityp speichert.

Was bleibt ist das Umlaut-Problem :

Die Umlaute werden dann in der MySQL-Tabelle immer als andere Zeichen (ANSI/ASCII-Typ ??!) dargestellt, die alles andere als "ä" oder "ü" darstellen ?!

FRAGE :

Kennt jemand dieses Problem und weiß wie man dem auch noch beikommen könnte ?! Hab auch schon versucht, die Datei mittels anderer Zeichensatz-Einstellung im Textpad zu speichern, aber hat bisher nix bewirkt.

Vermute ja mal, daß es stark mit dem Zeichensatz zusammenhängen wird ?!

Vielleicht muß man auch den ZEichensatz in MySQL ändern ?!

Danke vorab für Hilfestellungen !

Grüße Flori

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Flori

Was bleibt ist das Umlaut-Problem :

Die Umlaute werden dann in der MySQL-Tabelle immer als andere Zeichen (ANSI/ASCII-Typ ??!) dargestellt, die alles andere als "ä" oder "ü" darstellen ?

Das passiert aber auch nur bei der Ausgabe über die Konsole.

Da der Windowszeichensatz in dem Fall nicht mit Mysql übereinstimmt. >ASCII 127 wird falsch dargestellt.

Die Ausgabe über ein Programm als HTML oder ähnliches sollte aber korrekt sein.

Warum das Anzeigen beim Einfügen über die Konsole funktioniert, weiss ich auch nicht. Vielleicht werden die Werte als Programm Ausgabe dann falsch dargestellt.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Jaraz,

Danke schonmal für diese prompte Antwort !

Hm,

also in der Ausgabe in der Konsole werden die Namen dann immer so dargestellt :

Bõcker (also wird anstelle des "ä" der ANSI-Code davon dargestellt : <ALT> 228)

M³ller (also wird anstelle des "ä" der ANSI-Code davon dargestellt : <ALT> 252)

Werde in den nächsten Tagen wohl dahin kommen, das ganze mal über HTML und PHP abzufragen und anzeigen zu lassen - mal schauen wie die Darstellung dann im Browser ausschaut, am besten ich melde mich dann nochmal ?!

Ich habe gerade noch folgenden Link gefunden :

http://www.nwaev.fh-osnabrueck.de/interna/anleitungen/mysql/mysql01.html

Allerdings wird hier wohl beschrieben, daß es Probleme mit der Konsole gäbe und man mit Verwendung eines Texteditors Abhilfe schaffen könnte...

Tja, sieht aber ganz so aus als hätte ich genau das umgekehrte Problem : mit der Konsole klappt die Eingabe tadellos (nur die Ausgabe nicht?!) und dafür hakt es, wenn ich Text-Files importieren möchte..... :confused:

Naja, vielleicht findet noch jemand was zu dem Thema im Laufe der nächsten Tage.

Nun geh ich auch erstmal in die Heia, vielleicht find ich ja sogar selbst noch ne Lösung, wenn es nachher nicht mehr ganz so mitten in der Nacht ist. ;)

Danke für Hilfe, die vielleicht zwischenzeitklich nochmal eintrudelt ! :)

Flori

NACHTRAG :

Tatsächlich Jaraz - habe gerade mal ne Abfrage auf die Tabelle mit dem Windows-Basierten "MySQL-Manager.exe" gemacht, der ja auch im bin-Verzeichnis von MySQL liegt und dort werden alle "ä" und "ü" usw. wieder korrekt angezeigt, auch wenn ich diese Datensätze über eine Txt-Datei eingelesen habe.

Scheint wirklich "nur" ein Problem der Ausgabe über die Konsole zu sein....die Datensätze können aber über Anwenderoberflächen in PHP oder so scheinbar doch korrekt ausgewertet werden. :) *freu*

Tja, muß man wohl ganz genau unterscheiden :

a) Eingabe über INSERT INTO in der Konsole --->> Abfragen über Konsole korrekt, aber Einträge über Text-Files nicht lesbar !

B) Eingabe über LOAD DATA INFILE ---->> Abfragen unter Windows-Anwendungen korrekt, aber Einträge der Konsole nicht lesbar !

Man kann scheinbar nicht alles haben... :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 6 Jahre später...

Problem: Wenn man die MySQL Konsole über die Eingabeaufforderung (cmd.exe) von Windows aufruft und deutsche Umlaute per INSERT oder UPDATE in Tabellen einfügt, so werden diese bei Abruf über die MySQL Konsole zwar korrekt ausgegeben, aber beim Zugriff mit anderen Datenbank-Clients (z.B. Ausgabe per PHP in eine Webseite) erscheinen statt der Umlaute andere Sonderzeichen statt einem "Ü" z.B. "Å¡". Ursache: Die Standardeinstellung für den Zeichensatz auf der Clientseite (MySQL Konsole) und auf der Serverseite ist unter Windows bei einer Standardinstallation des MySQL Servers "latin1". Die aktuellen werte einer Clientverbindung lassen sich mit "show variables like 'char%';" abfragen. Das Ergebnis ähnelt i.d.R. diesem:

mysql> show variables like 'char%';

+--------------------------+-----------------------------------------------------+

| Variable_name | Value |

+--------------------------+-----------------------------------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | latin1 |

| character_set_server | latin1 |

| character_set_system | utf8 |

| character_sets_dir | C:\Programme\MySQL\MySQL Server 5.1\share\charsets\ |

+--------------------------+-----------------------------------------------------+

8 rows in set (0.00 sec)

Der MySQL Zeichensatz "latin1" entspricht im Grobem dem Zeichensatz Windows-1252 bzw. ISO/IEC 8859-1. Windows verwendet aber für die Eingabeaufforderung (cmd.exe) standardmäßig nicht die Codepage Windows-1252, sondern MS-DOS 850. Drücke ich mit CodePage 850 das "Ü", so wird dieses vom Zahlenwert her als (dec)154 interpretiert und auf der Konsole auch als "Ü" angezeigt. MySQL speichert dieses "Ü" dann als ein Byte mit dem Wert (dec)154 in der Datenbank. Übersetzt nach Windows-1252 bzw. latin1 bedeutet (dec)154 aber "Å¡". Wenn ich umgekehrt z.B. von einem PHP Formular aus ein "ü" eingebe, so wird dies als (dec)252 in der Datenbank gespeichert, bedeutet aber in der Zeichentabelle MS-DOS 850 "³". D.h. die Umlaute, die ich über einen Client eingebe, sind bei Abruf über den selben Weg immer korrekt, aber bei Abruf über den anderen immer falsch.

Lösung: Über den Befehl "chcp" (kurz für Change Codepage) kann man die Codepage für die Kommandozeile ändern. Ein einfaches "chcp 1252" schaltet die cmd.exe auf Windows-1252 bzw. latin1 um. Tippe ich jetzt ein "ü" erscheint bei Verwendung der Rasterschrift für das Konsolenfenster ein "³". Man kann die Schriftart für das Konsolenfenster aber auf "Lucida Console" umstellen, die auch Windows-1252 beherrscht, und erhält dann wieder ein "ü" angezeigt. Rufe ich danach die MySQL Konsole auf, werden die eingegebenen Umlaute von der Eingabeaufforderung als die Zahlenwerte an MySQL weitergereicht, die im Rahmen der Clienteinstellung latin1 erwartet werden.

Man kann sich auch eine Verknüpfung bauen, die die Codepage vor dem Aufruf der MySQL Konsole automatisch umschaltet.

Deren Ziel sähe dann in etwa so aus:

C:\WINDOWS\system32\cmd.exe /c chcp 1252 && "C:\Programme\MySQL\MySQL Server 5.1\bin\mysql.exe" -uuser -ppasswort

Link zu diesem Kommentar
Auf anderen Seiten teilen

# ----------

# Alternative Lösung

# ----------

Wenn man die Codepage der Windows Eingabeaufforderung nicht ändern möchte, so kann man alternativ auch den Zeichensatz der MySQL Verbindung umschalten. Nach dem Verbinden zum MySQL Server setzt der Befehl "SET NAMES 'cp850';" den Verbindungszeichsatz auf MS-DOS 850 um oder man startet die MySQL Konsole mit dem Parameter "--default-character-set=cp850". "SHOW VARIABLES LIKE 'char%'; liefert nun folgendes:

mysql> show variables like 'char%';

+--------------------------+-----------------------------------------------------+

| Variable_name | Value |

+--------------------------+-----------------------------------------------------+

| character_set_client | cp850 |

| character_set_connection | cp850 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | cp850 |

| character_set_server | latin1 |

| character_set_system | utf8 |

| character_sets_dir | C:\Programme\MySQL\MySQL Server 5.1\share\charsets\ |

+--------------------------+-----------------------------------------------------+

8 rows in set (0.00 sec)

Anfragen und Ergebnisse werden nun vom MySQL Server in MS-DOS 850 erwartet und geliefert.

Nachteil: Generell findet in dieser Variante ein automatischer Ausgleich der Verschiebungen zwischen cp850 und latin1 statt. Es stehen aber nicht alle Zeichen auf beiden Seiten zur Verfügung, die der deutsche Anwender gewöhnt ist. Das Eurozeichen z.B. wird in cp850 nicht unterstützt und bei der Konvertierung durch ein Fragezeichen ersetzt. Beim Arbeiten mit latin1 ist diese Variante also etwas "hässlicher".

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...