Signatur
Beschreibung
sapi_windows_cp_set() ändert die aktive Codepage (ACP) des laufenden PHP-Prozesses unter Windows. Dies beeinflusst, wie Zeichenketten bei der Ausgabe auf der Konsole oder bei bestimmten Windows-API-Aufrufen interpretiert und konvertiert werden.
Die Funktion ist besonders nützlich in CLI-Anwendungen, die auf Windows-Systemen mit unterschiedlichen Zeichensätzen arbeiten – etwa wenn man von der Standard-Codepage 850 (OEM) auf UTF-8 (Codepage 65001) oder eine andere Codepage wechseln möchte, um korrekte Darstellung von Sonderzeichen sicherzustellen.
Typische Anwendungsfälle sind Konsolenanwendungen, die internationale Zeichensätze (z. B. Kyrillisch, Arabisch, CJK) verarbeiten, sowie Fälle, in denen die Ausgabe in einer bestimmten Kodierung erwartet wird. Diese Funktion ist ausschließlich unter Windows verfügbar und steht auf Unix-Systemen nicht zur Verfügung.
- Codepage 65001 = UTF-8
- Codepage 1252 = Windows-1252 (Westeuropäisch)
- Codepage 850 = IBM OEM Multilingual Latin 1
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $codepage Pflicht | int | Der numerische Bezeichner der gewünschten Windows-Codepage, z. B. 65001 für UTF-8 oder 1252 für Windows-1252. |
Rückgabewert
true zurück, wenn die Codepage erfolgreich gesetzt wurde, andernfalls false (z. B. bei einer ungültigen oder nicht installierten Codepage).Beispiele
Prozess-Codepage auf UTF-8 setzen
<?php
// Codepage auf UTF-8 (65001) setzen
if (sapi_windows_cp_set(65001)) {
echo 'Codepage erfolgreich auf UTF-8 gesetzt.' . PHP_EOL;
echo 'Aktuelle Codepage: ' . sapi_windows_cp_get() . PHP_EOL;
} else {
echo 'Fehler beim Setzen der Codepage.' . PHP_EOL;
}
Ausgabe von Sonderzeichen in einer CLI-Anwendung
<?php
// Sicherstellen, dass die Konsole UTF-8 nutzt
sapi_windows_cp_set(65001);
$text = 'Ünïcödé Tëst: こんにちは, Привет, مرحبا';
echo $text . PHP_EOL;
// Wieder auf Windows-1252 zurücksetzen
sapi_windows_cp_set(1252);
echo 'Zurück auf Windows-1252.' . PHP_EOL;
// Wichtig · Fallstricke
Nur Windows: Diese Funktion ist ausschließlich auf Windows-Plattformen verfügbar. Auf Unix/Linux-Systemen existiert sie nicht und führt bei Aufruf zu einem schwerwiegenden Fehler (Fatal Error), sofern nicht zuvor geprüft wird, ob sie definiert ist (function_exists('sapi_windows_cp_set')).
Das Setzen der Codepage auf 65001 (UTF-8) wird empfohlen, wenn PHP-Skripte auf der Windows-Konsole UTF-8-kodierte Ausgaben erzeugen sollen. Es ist jedoch zu beachten, dass nicht alle Windows-Konsolenversionen UTF-8 vollständig unterstützen. Außerdem betrifft die Änderung nur den aktuellen Prozess und hat keine Auswirkungen auf andere Prozesse oder systemweite Einstellungen.