Start · Sprachen · PHP · Referenz · sapi_windows_cp_is_utf8

sapi_windows_cp_is_utf8

Funktion

Gibt zurück, ob die aktuelle Windows-Codepage der SAPI UTF-8-kompatibel ist.

seit PHP 7.1.0 Kategorie: misc

Signatur

sapi_windows_cp_is_utf8(): bool

Beschreibung

sapi_windows_cp_is_utf8() prüft, ob die aktuell gesetzte Codepage der Windows-SAPI (Server Application Programming Interface) UTF-8 entspricht. Auf Windows-Systemen arbeiten Konsolenanwendungen und PHP-CLI-Skripte mit einer systemspezifischen Codepage, die bestimmt, wie Text kodiert und ausgegeben wird.

Die Funktion ist besonders nützlich, wenn man sicherstellen möchte, dass Texte korrekt kodiert ausgegeben werden – etwa beim Schreiben von CLI-Werkzeugen, die Unicode-Zeichen (z. B. Umlaute, chinesische Schriftzeichen, Emojis) in der Windows-Konsole ausgeben sollen. Ist die Codepage UTF-8 (Codepage 65001), gibt die Funktion true zurück; andernfalls false.

Diese Funktion steht ausschließlich unter Windows zur Verfügung und ist nur in SAPI-Umgebungen (z. B. CLI) sinnvoll einsetzbar. In Kombination mit sapi_windows_cp_set() und sapi_windows_cp_get() lässt sich die Codepage-Verwaltung vollständig kontrollieren.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die aktuelle Windows-SAPI-Codepage UTF-8 (Codepage 65001) ist, andernfalls false.

Beispiele

Prüfen, ob UTF-8-Ausgabe möglich ist

<?php
if (sapi_windows_cp_is_utf8()) {
    echo "Die Konsole verwendet UTF-8 – Unicode-Ausgabe ist möglich.\n";
} else {
    $current = sapi_windows_cp_get();
    echo "Aktuelle Codepage: {$current} – keine UTF-8-Unterstützung.\n";
}
Die Konsole verwendet UTF-8 – Unicode-Ausgabe ist möglich.

Automatisch auf UTF-8 umschalten, falls nötig

<?php
if (!sapi_windows_cp_is_utf8()) {
    // Versuche, die Codepage auf UTF-8 (65001) zu setzen
    if (sapi_windows_cp_set(65001)) {
        echo "Codepage erfolgreich auf UTF-8 gesetzt.\n";
    } else {
        echo "Codepage konnte nicht geändert werden.\n";
    }
} else {
    echo "UTF-8 ist bereits aktiv.\n";
}

// Jetzt sicher Unicode-Zeichen ausgeben
echo "Hallo Welt: \u{1F600}\n";
UTF-8 ist bereits aktiv. Hallo Welt: 😀

// Wichtig · Fallstricke

Nur unter Windows verfügbar: Diese Funktion existiert ausschließlich auf Windows-Plattformen. Auf Linux/macOS führt ein Aufruf zu einem schwerwiegenden Fehler (Call to undefined function). Bei plattformübergreifendem Code sollte die Verfügbarkeit zuvor mit function_exists('sapi_windows_cp_is_utf8') geprüft werden.

Nur für Windows-SAPI-Kontexte: Die Funktion ist primär für CLI-Skripte gedacht. Im Webserver-Kontext (z. B. Apache, FPM) ist die Windows-Codepage in der Regel irrelevant, da die HTTP-Antworten eigene Encoding-Header verwenden.