Sven Rautenberg: Schon wieder Probleme mit Umlauten (UTF-8)

Beitrag lesen

Moin!

Alle mb-Funktionen haben einen Parameter, der das anzunehmende Encoding angibt. Wenn man den nicht jedesmal explizit angibt, wäre mindestens das mb_internal_encoding zu definieren. Ansonsten bauen deine mb_strtolower() aus dem "ü" nämlich ein kleingemachtes ISO-8859-1-Ersatzzeichen, weil ISO-8859-1 evtl. Standardencoding ist.

Ich hatte vor einiger Zeit auch schon mal zu einem ähnlichen Thema gefragt:
Worauf bezieht sich denn das "Standardencoding"?
Auf PHP oder auf das Betriebssystem.

Auf die PHP.INI.

Selbst wenn ich den Apache, PHP und alle meine Header bzw. PHP Seiten in UTF8 ausliefere, bringt mit ein echo mb_internal_encoding() immer ISO-8859-1.

Die PHP.INI erlaubt diverse Settings für das mbstring-Modul. Etliche davon beschäftigen sich mit der automatischen Erkennung des Encodings. Das mag in manchen speziellen Situationen hilfreich sein, aber allgemein sollte man a) alle seine verwendeten Encodings kennen und deshalb b) immer explizit angeben. Im Idealfall also immer explizit UTF-8 verwenden, und nur an bestimmten Schnittstellen zu ISO-8859-1/Win-1252/ISO-8859-15, deren Encoding man nicht ändern kann, direkt eine Konvertierung einbauen.

- Sven Rautenberg