Sven Rautenberg: MySQL - Umlaute - Suchen

Beitrag lesen

Moin!

WHERE papier LIKE '%inhalt%'

dann findet er alle INHALT, Inhalt, iNHALT

und das macht er bei dir nicht? Komische Sache...

Oja, das funktioniert bei mir auch. Aber versuch das mal mit "inhält" bzw halt einem Umlaut im String. Da hab ich das Problem.

Trag in die Tabelle ein: "inhält" und "inhÄlt" und such dann eines der beiden, da find ich immer nur eines.

Dann hast du die MySQL-Verbindung nicht auf UTF-8 eingestellt, aber dennoch UTF-8 Daten gesendet, die MySQL als Default (typisch ISO-8859-1) empfangen hat, und nach UTF-8 konvertiert ins Feld gespeichert hat.

Resultat: Im Feld steht kein Umlaut, sondern die UTF-8-Form der ISO-8859-1-Darstellung des UTF-8-Umlauts. Und der kann natürlich nicht korrekt in die Case-Insensitive-Betrachtung einfließen, und daher werden nur bei korrekter Übereinstimmung der Großschreibung Funde gemeldet.

"SET NAMES utf8" als erster Query sollte Pflichtbestandteil jedes vernünftigen Verbindungsaufbaus zur Datenbank sein.

- Sven Rautenberg

--
"Love your nation - respect the others."