Signatur
Beschreibung
iconv_set_encoding() ermöglicht es, die drei zentralen Encoding-Einstellungen des iconv-Moduls zur Laufzeit zu ändern. Diese Einstellungen steuern, welcher Zeichensatz beim Lesen von Daten (input_encoding), beim Ausgeben von Daten (output_encoding) und intern (internal_encoding) verwendet wird.
Der Parameter type gibt an, welche Einstellung geändert werden soll. Gültige Werte sind input_encoding, output_encoding und internal_encoding. Der Wert encoding ist der Name des gewünschten Zeichensatzes, zum Beispiel UTF-8, ISO-8859-1 oder Windows-1252.
Diese Funktion ist besonders dann nützlich, wenn eine Anwendung mit Daten aus verschiedenen Quellen umgeht, die unterschiedliche Zeichensätze verwenden. Durch gezieltes Setzen der Einstellungen können Konvertierungsfehler oder Darstellungsprobleme vermieden werden.
Hinweis: Ab PHP 5.6.0 wird die Verwendung von iconv_set_encoding() für internal_encoding als veraltet angesehen; stattdessen sollte ini_set('default_charset', 'UTF-8') oder die INI-Direktive iconv.internal_encoding verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $type Pflicht | string | Gibt an, welche Encoding-Einstellung geändert werden soll. Erlaubte Werte: input_encoding, output_encoding oder internal_encoding. |
|
| $encoding Pflicht | string | Der Name des Zeichensatzes, z. B. UTF-8, ISO-8859-1 oder Windows-1252. Der Wert muss ein von iconv unterstützter Zeichensatz-Name sein. |
Rückgabewert
true zurück, wenn die Einstellung erfolgreich gesetzt wurde. Gibt false zurück, wenn der angegebene Typ ungültig oder der Zeichensatz nicht unterstützt wird.Beispiele
Internes und Ausgabe-Encoding setzen
<?php
// Internes Encoding auf UTF-8 setzen
if (iconv_set_encoding('internal_encoding', 'UTF-8')) {
echo 'Internes Encoding erfolgreich auf UTF-8 gesetzt.' . PHP_EOL;
} else {
echo 'Fehler beim Setzen des internen Encodings.' . PHP_EOL;
}
// Ausgabe-Encoding auf ISO-8859-1 setzen
if (iconv_set_encoding('output_encoding', 'ISO-8859-1')) {
echo 'Ausgabe-Encoding erfolgreich auf ISO-8859-1 gesetzt.' . PHP_EOL;
} else {
echo 'Fehler beim Setzen des Ausgabe-Encodings.' . PHP_EOL;
}
// Aktuelle Einstellungen prüfen
var_dump(iconv_get_encoding('all'));
Eingabe-Encoding für externe Daten setzen
<?php
// Daten aus einer externen Quelle kommen im Windows-1252-Format an
iconv_set_encoding('input_encoding', 'Windows-1252');
iconv_set_encoding('internal_encoding', 'UTF-8');
// Simulierter Windows-1252-String (Umlaut ü)
$win1252String = "\xFC berlegt";
// Konvertierung mit den gesetzten Encodings
$utf8String = iconv(
iconv_get_encoding('input_encoding'),
iconv_get_encoding('internal_encoding'),
$win1252String
);
echo $utf8String; // gibt 'ü berlegt' als UTF-8 aus
// Wichtig · Fallstricke
Deprecation: Ab PHP 5.6.0 ist die Änderung von internal_encoding über iconv_set_encoding() veraltet. Es wird empfohlen, stattdessen die INI-Direktive default_charset oder iconv.internal_encoding zu verwenden, z. B. via ini_set('default_charset', 'UTF-8').
Falsch gesetzte Encodings können zu unlesbaren Zeichen (Mojibake) oder Datenverlust führen, insbesondere wenn Multibyte-Zeichen betroffen sind. Es empfiehlt sich, konsequent UTF-8 als internes Encoding zu verwenden.
Die gültigen Zeichensatz-Namen hängen von der installierten iconv-Bibliothek ab. Mit iconv --list auf der Kommandozeile lassen sich alle unterstützten Zeichensätze auflisten.