Zum Hauptmenü

Ersatz für utf8_decode()

Jörg Kruse

Die PHP-Funktion utf8_decode(), welche eine Zeichenkette von UTF-8 nach ISO-8859-1 konvertiert, ist seit der PHP-Version 8.2 als veraltet (deprecated) markiert. In einer künftigen PHP-Version, womöglich bereits in PHP 9.0., wird diese Funktion vermutlich entfernt werden.

ISO-8859-1, welches in den frühen 2000er Jahren noch die Standard-Kodierung von westlichen Schriftsystemen in Webseiten war, wurde inzwischen in dieser Rolle von der universell einsetzbaren Kodierung UTF-8 abgelöst. Vor knapp fünfzehn Jahren hatte ich in meinem Blog einen Beitrag über die Umstellung auf UTF-8 geschrieben. Heutzutage sollten Webseiten weitgehend auf diese Kodierung umgestellt sein. Nur in sehr seltenen Ausnahmefällen könnte noch eine Unterstützung von ISO-8859-1 notwendig sein, z.B. bei Verwendung von Plugins, Modulen oder Klassen, die seit langem nicht weiterentwickelt wurden und so auch keine UTF-8-Unterstützung mehr erhielten (wie z.B im Fall von FPDF). Zeichenketten aus der Datenbank oder aus einer Formulareingabe werden hierbei mithilfe von utf8_decode() nach ISO-8859-1 konvertiert und an die veraltete Software-Kompontente übergeben.

Die drohende Deaktivierung wäre ein guter Anlass, die Altlasten durch moderne Lösungen mit UTF-8-Unterstützung zur ersetzen. Falls eine solche Überarbeitung aus Gründen in nächster Zeit nicht erfolgen kann, ließe sich utf8_decode() hilfsweise auch durch den Einsatz von mb_convert_encoding() oder iconv() ersetzen. Die Verfügbarkeit dieser Funktionen wird durch die PHP-Erweiterungen mbstring bzw. iconv sichergestellt.

So ließe sich beispielsweise diese Code-Zeile ersetzen:


$string_latin1 = utf8_decode($string_utf8);

… durch diese Code-Zeile …:


$string_latin1 = mb_convert_encoding($string_utf_8, 'ISO-8859-1', 'UTF-8');

… oder durch diese Code-Zeile:


$string_latin1 = iconv("UTF-8", "ISO-8859-1//IGNORE", $string_utf_8);
Tags: PHP

Die Kommentarfunktion wurde nach 180 Tagen automatisch geschlossen.
Fragen zu diesem Thema können auch in meinen Webmaster-Forum gestellt werden: