Signatur
Beschreibung
sapi_windows_cp_get() ermittelt die aktive Codepage der Windows-Konsole (CMD/PowerShell), unter der das PHP-Skript läuft. Dies ist besonders relevant, wenn Zeichenketten zwischen verschiedenen Kodierungen konvertiert werden müssen, z. B. bei der Ausgabe von Sonderzeichen oder Umlauten in CLI-Anwendungen unter Windows.
Der Parameter kind steuert, welche Codepage abgefragt wird: Mit 'ansi' wird die ANSI-Codepage des Systems zurückgegeben (entspricht der Systemsprache), ohne Argument oder mit einem leeren String wird die aktuelle OEM-Codepage der Konsole zurückgegeben.
Typische Rückgabewerte sind beispielsweise 850 (DOS-Latin-1, Westeuropa), 65001 (UTF-8) oder 1252 (Windows-1252 / ANSI Western European). Diese Funktion ist ausschließlich auf Windows verfügbar und steht nur im CLI-SAPI sowie in verwandten SAPIs zur Verfügung.
Sie wird häufig zusammen mit sapi_windows_cp_set() und sapi_windows_cp_conv() eingesetzt, um Texte korrekt zu kodieren und auf der Windows-Konsole darzustellen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $kind | string | '' | Art der abzufragenden Codepage. Mögliche Werte: 'ansi' für die ANSI-Systemcodepage oder ein leerer String (Standard) für die OEM-Konsolencodepage. |
Rückgabewert
65001 für UTF-8 oder 1252 für Windows-1252. Gibt 0 zurück, wenn die Codepage nicht ermittelt werden kann oder die Funktion auf einem Nicht-Windows-System aufgerufen wird.Beispiele
Aktuelle OEM-Konsolencodepage ausgeben
<?php
// Gibt die aktuelle OEM-Codepage der Windows-Konsole aus
$codepage = sapi_windows_cp_get();
echo "Aktuelle Konsolencodepage: " . $codepage . PHP_EOL;
// Beispielausgabe unter deutschem Windows: 850
ANSI-Systemcodepage abfragen und Vergleich
<?php
// Abfrage der OEM- und der ANSI-Codepage
$oemCp = sapi_windows_cp_get();
$ansiCp = sapi_windows_cp_get('ansi');
echo "OEM-Codepage: " . $oemCp . PHP_EOL;
echo "ANSI-Codepage: " . $ansiCp . PHP_EOL;
if ($oemCp !== $ansiCp) {
echo "OEM- und ANSI-Codepage unterscheiden sich – Konvertierung kann nötig sein." . PHP_EOL;
} else {
echo "OEM- und ANSI-Codepage sind identisch." . PHP_EOL;
}
// Wichtig · Fallstricke
Plattformabhängigkeit: Diese Funktion ist ausschließlich unter Windows verfügbar und funktioniert nur im CLI-SAPI. Auf Linux/macOS oder unter einem Web-SAPI (Apache, FPM) liefert sie 0 und hat keine sinnvolle Wirkung.
Wenn Sonderzeichen oder Umlaute in der Windows-Konsole falsch dargestellt werden, sollte zunächst mit sapi_windows_cp_get() die aktive Codepage geprüft und anschließend entweder über sapi_windows_cp_set(65001) auf UTF-8 umgestellt oder mit sapi_windows_cp_conv() eine Zeichenkettenkonvertierung durchgeführt werden.