dedlfix: Wie nutze ich deutsche Umlaute richtig in PhP

Beitrag lesen

Tach!

Abgeshen davon daß charset (utf8) und collation (utf8_general_ci) richtig eingestellt sein müssen,

Ja, und zwar bei den betroffenen Feldern. Das reicht aber schon, solange die Daten im DBMS korrekt eingetragen wurden.

auch in PHP sollte ein SET NAMES UTF8 möglich sein damit MySQL-Stingfunktionen funktionieren.

SET NAMES kann man als Statement losschicken. Aber zum einen beeinflusst das nicht die interne Arbeitsweise von MySQL, sondern dient lediglich dazu, die für den Transport von und zum Client zu verwendende Kodierung einzustellen.

Zum anderen ist es besser, die Zeichenkodierung über die vorhandene Funktion mysqli_set_charset() oder (objektorientiert mysqli::set_charset()) einzustellen. Damit weiß nun auch die Client-API, was für eine Kodierung genommen wird. Sendet man SET NAMES als Statement, wird das von der Client-API nur durchgereicht aber nicht von ihr in den Funktionen, die sie selbst ohne Serverbeteiligung ausführen kann, berücksichtigt.

Auch für PDO braucht man kein SET NAMES, da gibt man charset=... als Teil des DSN beim Erstellen des PDO-Objekts an.

dedlfix.