(PHP 4, PHP 5, PHP 7, PHP 8)
utf8_encode — Konvertiert eine Zeichenkette von ISO-8859-1 nach UTF-8
Diese Funktion ist seit PHP 8.2.0 als DEPRECATED (veraltet) markiert. Von der Verwendung dieser Funktion wird dringend abgeraten.
Diese Funktion konvertiert die Zeichenkette string
von der ISO-8859-1
-Kodierung nach UTF-8
.
Hinweis:
Diese Funktion versucht nicht, die aktuelle Kodierung der angegebenen Zeichenkette zu erraten, sondern nimmt an, dass sie als ISO-8859-1 (auch bekannt als "Latin 1") kodiert ist, und konvertiert nach UTF-8. Da jede Folge von Bytes eine gültige ISO-8859-1-Zeichenkette ist, führt dies zwar nie zu einem Fehler, aber auch nicht zu einer brauchbaren Zeichenkette, wenn eine andere Kodierung vorgesehen war.
Viele Webseiten, die ausgewiesen sind, die
ISO-8859-1
-Zeichenkodierung zu verwenden, nutzen in Wirklichkeit die ähnlicheWindows-1252
-Kodierung, und Webbrowser interpretierenISO-8859-1
-Webseiten alsWindows-1252
.Windows-1252
ermöglicht zusätzliche druckbare Zeichen, so wie das Euro-Zeichen (€
) und geschweifte Anführungszeichen (“
”
), anstelle von bestimmtenISO-8859-1
-Kontrollzeichen. Diese Funktion konvertiert solcheWindows-1252
-Zeichen nicht korrekt. Verwenden Sie eine andere Funktion, wennWindows-1252
-Konvertierung erforderlich ist.
string
Eine ISO-8859-1-kodierte Zeichenkette.
Gibt die UTF-8-Übersetzung von string
zurück.
Version | Beschreibung |
---|---|
8.2.0 | Diese Funktion ist veraltet. |
7.2.0 | Diese Funktion wurde von der Erweiterung XML in den Kern von PHP verschoben. In früheren Versionen war diese Funktion nur verfügbar, wenn die Erweiterung XML installiert war. |
Beispiel #1 Grundlegendes Beispiel
<?php
// Konvertiert die Zeichenkette "Zoë" von ISO 8859-1 nach UTF-8
$iso8859_1_string = "\x5A\x6F\xEB";
$utf8_string = utf8_encode($iso8859_1_string);
echo bin2hex($utf8_string), "\n";
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
5a6fc3ab
Hinweis: Wegfall und Alternativen
Diese Funktion ist ab PHP 8.2.0 veraltet und wird in einer zukünftigen Version entfernt. Bereits vorhandene Verwendungen sollten überprüft und durch geeignete Alternativen ersetzt werden.
Die Funktion mb_convert_encoding() bietet eine ähnliche Funktionalität und unterstützt ISO-8859-1 und viele andere Zeichenkodierungen.
<?php
$iso8859_1_string = "\xEB"; // 'ë' (e mit Trema) in ISO-8859-1
$utf8_string = mb_convert_encoding($iso8859_1_string, 'UTF-8', 'ISO-8859-1');
echo bin2hex($utf8_string), "\n";
$iso8859_7_string = "\xEB"; // in ISO-8859-7 steht dieselbe Zeichenkette für 'λ' (griechisches Lambda kleingeschrieben)
$utf8_string = mb_convert_encoding($iso8859_7_string, 'UTF-8', 'ISO-8859-7');
echo bin2hex($utf8_string), "\n";
$windows_1252_string = "\x80"; // '€' (Euro-Zeichen) in Windows-1252, aber nicht in ISO-8859-1
$utf8_string = mb_convert_encoding($windows_1252_string, 'UTF-8', 'Windows-1252');
echo bin2hex($utf8_string), "\n";
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
c3ab cebb e282acAndere Optionen, die in Abhängigkeit von den installierten Erweiterungen verfügbar sein können, sind UConverter::transcode() und iconv().
Die folgenden Beispiele führen alle zum selben Ergebnis:
<?php
$iso8859_1_string = "\x5A\x6F\xEB"; // 'Zoë' in ISO-8859-1
$utf8_string = utf8_encode($iso8859_1_string);
echo bin2hex($utf8_string), "\n";
$utf8_string = mb_convert_encoding($iso8859_1_string, 'UTF-8', 'ISO-8859-1');
echo bin2hex($utf8_string), "\n";
$utf8_string = UConverter::transcode($iso8859_1_string, 'UTF8', 'ISO-8859-1');
echo bin2hex($utf8_string), "\n";
$utf8_string = iconv('ISO-8859-1', 'UTF-8', $iso8859_1_string);
echo bin2hex($utf8_string), "\n";
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
5a6fc3ab 5a6fc3ab 5a6fc3ab 5a6fc3ab