Seite 1 von 1

FYI: (Lösung) mysql-Probleme mit Umlauten

Verfasst: 15.01.2004 16:39
von R. U. Serious
Dieser Beitrag ist als zukünftige Referenz gedacht.

Bei dem Umzug auf einen Managed-Server von 1und1 gab es Probleme bei der richtigen Nutzung von Umlauten.

Symptom: Obwohl Umlaute richtig gespeichert und richtig angezeigt wurden, wurden bei Vergleichen (z.B. mit LIKE), Umlaute und Vokale gleich behandelt. u=ü, ä=a, ö=o.

Folgen: Wenn also verschiedene User (fast) den gleichen Namen hatten, der sich nur durch Umlaute unterschied, bspw.: "Munster und Münster", konnte sich der zweite User nicht mehr anmelden, man konnte auch nicht mehr sein Profil editieren usw..

Test: Um zu überprüfen ob man das Problem hat, kann man folgende Abfragen ausführen. Als Ergebnis sollte nur eine Zeile angezeigt werden, werden beide angezeigt, dann ist man vom Problem betroffen:

Code: Alles auswählen

CREATE TABLE `test` (
	`name` VARCHAR( 10 ) NOT NULL
);
INSERT INTO `test` ( `name` ) VALUES ('Munster');
INSERT INTO `test` ( `name` ) VALUES ('Münster');
SELECT * FROM `test` WHERE name LIKE 'Munster'
Workaround: Man erzwingt einen BINARY Verlgleich bei jeder Abfrage, oder (natürlich leichter) man ändert das Attribut der Spalte "username" in BINARY. Letzteres geht mit folgender Abfrage:

Code: Alles auswählen

ALTER TABLE `phpbb_users` CHANGE `username` `username` VARCHAR( 25 ) BINARY NOT NULL 
Nebenwirkung: Die Eingabe von Usernamen unterscheidet nun auch noch nach Groß- und Kleinschreibung.