Start · Sprachen · PHP · Referenz · mb_http_output

mb_http_output

Funktion

Setzt oder liefert die Zeichenkodierung für die HTTP-Ausgabe des Multibyte-Ausgabe-Handlers.

seit PHP 4.0.6 Kategorie: string

Signatur

mb_http_output(?string $encoding = null): string|bool

Beschreibung

mb_http_output() steuert, in welche Zeichenkodierung der PHP-Multibyte-Ausgabe-Handler (mb_output_handler) die ausgegebenen Daten konvertiert. Wenn kein Argument übergeben wird, gibt die Funktion die aktuell eingestellte HTTP-Ausgabe-Kodierung zurück.

Diese Funktion ist relevant, wenn mb_output_handler als Output-Buffer-Handler registriert ist – typischerweise über output_handler = mb_output_handler in der php.ini oder per ob_start('mb_output_handler'). Der Handler konvertiert dann intern erzeugte Multibyte-Strings automatisch von der internen Kodierung (mb_internal_encoding()) in die gewünschte HTTP-Ausgabe-Kodierung.

Typische Anwendungsfälle sind Webanwendungen, die intern mit UTF-8 arbeiten, aber aus Kompatibilitätsgründen Daten in einer anderen Kodierung (z. B. ISO-8859-1, Shift_JIS) an bestimmte Clients ausliefern müssen. Für moderne Anwendungen empfiehlt sich jedoch durchgehend UTF-8.

Wichtig: Das Setzen der Kodierung via mb_http_output() hat nur dann eine Wirkung, wenn der Multibyte-Ausgabe-Handler aktiv ist. Ohne aktiven Handler hat diese Einstellung keinen sichtbaren Effekt auf die tatsächlich gesendeten Daten.

Parameter

Name Typ Default Beschreibung
$encoding string|null null Der Name der gewünschten Zeichenkodierung für die HTTP-Ausgabe, z. B. 'UTF-8', 'ISO-8859-1' oder 'Shift_JIS'. Wird null oder kein Argument übergeben, gibt die Funktion die aktuell eingestellte Kodierung zurück, ohne sie zu ändern. Der Wert 'pass' deaktiviert die Konvertierung.

Rückgabewert

Typ
string|bool
Beschreibung
Wird kein Argument übergeben (Abfragemodus), gibt die Funktion die aktuell eingestellte HTTP-Ausgabe-Kodierung als string zurück. Wird eine Kodierung gesetzt, gibt die Funktion true bei Erfolg oder false bei ungültiger Kodierung zurück.

Beispiele

Aktuelle HTTP-Ausgabe-Kodierung abfragen

<?php
// Aktuelle HTTP-Ausgabe-Kodierung ermitteln
$encoding = mb_http_output();
echo 'Aktuelle HTTP-Ausgabe-Kodierung: ' . $encoding;
Aktuelle HTTP-Ausgabe-Kodierung: pass

HTTP-Ausgabe-Kodierung setzen und Ausgabe-Handler aktivieren

<?php
// Interne Kodierung auf UTF-8 setzen
mb_internal_encoding('UTF-8');

// HTTP-Ausgabe-Kodierung auf ISO-8859-1 setzen (z. B. für ältere Clients)
$result = mb_http_output('ISO-8859-1');

if ($result) {
    echo 'HTTP-Ausgabe-Kodierung erfolgreich gesetzt auf: ' . mb_http_output();
} else {
    echo 'Ungültige Kodierung angegeben.';
}

// Ausgabe-Handler aktivieren, der automatisch konvertiert
ob_start('mb_output_handler');

// Hier wird intern UTF-8-Text erzeugt
echo 'Hallo Welt – mit Umlauten: äöü';

// Ausgabe-Puffer leeren: der Handler konvertiert zu ISO-8859-1
ob_end_flush();
HTTP-Ausgabe-Kodierung erfolgreich gesetzt auf: ISO-8859-1 Hallo Welt – mit Umlauten: äöü

// Wichtig · Fallstricke

Nur wirksam mit aktivem Ausgabe-Handler: Das Setzen der Kodierung über mb_http_output() beeinflusst die tatsächliche Ausgabe nur dann, wenn mb_output_handler als aktiver Output-Buffer-Handler registriert ist. Ohne diesen Handler wird die Ausgabe nicht konvertiert, unabhängig von der hier gesetzten Kodierung.

Reihenfolge beachten: mb_http_output() sollte vor ob_start('mb_output_handler') aufgerufen werden, da der Handler beim Start die eingestellte Kodierung liest.

Moderne Empfehlung: Für neue Projekte sollte durchgängig UTF-8 verwendet werden (mb_internal_encoding('UTF-8') und mb_http_output('UTF-8')), um Kodierungsprobleme zu vermeiden. Eine Konvertierung zu anderen Kodierungen sollte nur erfolgen, wenn es zwingende Kompatibilitätsgründe gibt.