Signatur
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
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;
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();
// 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.