Signatur
Beschreibung
mb_internal_encoding() gehört zur mbstring-Erweiterung und legt fest, welche Zeichenkodierung (z. B. UTF-8, ISO-8859-1) die Multibyte-Stringfunktionen intern verwenden, wenn kein eigenes $encoding-Argument angegeben wird. Wird kein Parameter übergeben, gibt die Funktion die aktuell gesetzte interne Kodierung als String zurück.
Das Setzen der internen Kodierung ist besonders wichtig, um sicherzustellen, dass Funktionen wie mb_strlen(), mb_substr() oder mb_strtolower() korrekt arbeiten, wenn die Anwendung durchgehend eine bestimmte Kodierung verwendet – typischerweise UTF-8. In modernen PHP-Projekten wird UTF-8 fast immer als Standard empfohlen.
Die interne Kodierung kann alternativ in der php.ini über den Wert mbstring.internal_encoding voreingestellt werden. Ab PHP 5.6 erbt mbstring.internal_encoding automatisch den Wert von default_charset (Standard: UTF-8), weshalb ein expliziter Aufruf von mb_internal_encoding() oft nicht mehr notwendig ist.
Soll die Kodierung nur vorübergehend geändert werden, empfiehlt es sich, den alten Wert vorher mit einem Aufruf ohne Argument zu sichern und nach der Verarbeitung wiederherzustellen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $encoding | string|null | null | Der Name der zu setzenden Zeichenkodierung, z. B. "UTF-8" oder "ISO-8859-1". Wird null oder kein Wert übergeben, gibt die Funktion die aktuell gesetzte Kodierung zurück, anstatt sie zu ändern. |
Rückgabewert
$encoding angegeben, gibt die Funktion die aktuelle interne Kodierung als string zurück. Wird eine Kodierung gesetzt, gibt sie bei Erfolg true zurück, bei einem ungültigen Kodierungsnamen false.Beispiele
Interne Kodierung abrufen und setzen
<?php
// Aktuelle Kodierung abfragen
$current = mb_internal_encoding();
echo 'Aktuelle Kodierung: ' . $current . PHP_EOL;
// Kodierung auf UTF-8 setzen
$success = mb_internal_encoding('UTF-8');
if ($success) {
echo 'Kodierung erfolgreich auf UTF-8 gesetzt.' . PHP_EOL;
} else {
echo 'Ungültige Kodierung angegeben.' . PHP_EOL;
}
// Überprüfen
echo 'Neue Kodierung: ' . mb_internal_encoding() . PHP_EOL;
Kodierung temporär ändern und wiederherstellen
<?php
// Ursprüngliche Kodierung sichern
$previousEncoding = mb_internal_encoding();
// Temporär auf ISO-8859-1 wechseln
mb_internal_encoding('ISO-8859-1');
$str = mb_strtoupper('hallo welt'); // arbeitet nun mit ISO-8859-1
echo $str . PHP_EOL;
// Ursprüngliche Kodierung wiederherstellen
mb_internal_encoding($previousEncoding);
echo 'Kodierung wiederhergestellt: ' . mb_internal_encoding() . PHP_EOL;
// Wichtig · Fallstricke
Ab PHP 5.6 übernimmt mbstring.internal_encoding automatisch den Wert von default_charset (Standardwert: UTF-8). In den meisten modernen Projekten ist ein expliziter Aufruf daher nicht mehr notwendig, solange default_charset korrekt gesetzt ist.
Wird ein ungültiger Kodierungsname übergeben (z. B. ein Tippfehler wie "UTF8" statt "UTF-8"), gibt die Funktion false zurück und die interne Kodierung bleibt unverändert. Eine Überprüfung des Rückgabewerts beim Setzen ist daher ratsam.
Die interne Kodierung betrifft ausschließlich die mbstring-Funktionen. Andere Funktionen wie strlen() oder strtolower() arbeiten weiterhin byteweise und sind davon nicht beeinflusst.