Start · Sprachen · PHP · Referenz · mb_internal_encoding

mb_internal_encoding

Funktion

Setzt oder liefert die interne Zeichenkodierung, die von den <code>mbstring</code>-Funktionen standardmäßig verwendet wird.

seit PHP 4.0.6 Kategorie: string

Signatur

mb_internal_encoding(string|null $encoding = null): string|bool

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

Typ
string|bool
Beschreibung
Wird kein $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;
Aktuelle Kodierung: UTF-8 Kodierung erfolgreich auf UTF-8 gesetzt. Neue Kodierung: UTF-8

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;
HALLO WELT Kodierung wiederhergestellt: UTF-8

// 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.