Start · Sprachen · PHP · Referenz · sapi_windows_cp_set

sapi_windows_cp_set

Funktion

Setzt die aktive Codepage des aktuellen Windows-Prozesses auf den angegebenen Codepage-Identifier.

seit PHP 7.1.0 Kategorie: misc

Signatur

sapi_windows_cp_set(int $codepage): bool

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

Typ
bool
Beschreibung
Gibt 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;
}
Codepage erfolgreich auf UTF-8 gesetzt. Aktuelle Codepage: 65001

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;
Ünïcödé Tëst: こんにちは, Привет, مرحبا Zurück auf Windows-1252.

// 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.