SetFileApisToOEM-Funktion (fileapi.h)

Bewirkt, dass die Datei-E/A-Funktionen für den Prozess die OEM-Zeichensatzcodepage verwenden. Diese Funktion ist für Eingabe- und Ausgabevorgänge der 8-Bit-Konsole nützlich.

Syntax

void SetFileApisToOEM();

Rückgabewert

Keine

Bemerkungen

Die Datei-E/A-Funktionen, deren Codepage von SetFileApisToOEM festgelegt wird, sind die von KERNEL32.DLL exportierten Funktionen, die einen Dateinamen akzeptieren oder zurückgeben. SetFileApisToOEM legt die Codepage pro Prozess und nicht pro Thread oder Computer fest.

Die SetFileApisToOEM-Funktion wird durch die SetFileApisToANSI-Funktion ergänzt, die dazu führt, dass derselbe Satz von Datei-E/A-Funktionen die ANSI-Zeichensatzcodepage verwendet.

Die 8-Bit-Konsolenfunktionen verwenden standardmäßig die OEM-Codepage. Alle anderen Funktionen verwenden standardmäßig die ANSI-Codepage. Dies bedeutet, dass von den Konsolenfunktionen zurückgegebene Zeichenfolgen möglicherweise nicht ordnungsgemäß von anderen Funktionen verarbeitet werden und umgekehrt. Wenn die FindFirstFileA-Funktion beispielsweise eine Zeichenfolge zurückgibt, die bestimmte erweiterte ANSI-Zeichen enthält, und die 8-Bit-Konsolenfunktionen so festgelegt sind, dass sie die OEM-Codepage verwenden, wird die Zeichenfolge von der WriteConsoleA-Funktion nicht ordnungsgemäß angezeigt.

Verwenden Sie die AreFileApisANSI-Funktion , um zu bestimmen, welche Codepage der Satz von Datei-E/A-Funktionen derzeit verwendet. Verwenden Sie die Funktionen SetConsoleCP und SetConsoleOutputCP , um die Codepage für die 8-Bit-Konsolenfunktionen festzulegen.

Um das Problem der Inkompatibilität von Codeseiten zu beheben, empfiehlt es sich, Unicode für Konsolenanwendungen zu verwenden. Konsolenanwendungen, die Unicode verwenden, sind viel vielseitiger als diejenigen, die 8-Bit-Konsolenfunktionen verwenden. Abgesehen von dieser Lösung kann eine Konsolenanwendung die Funktion SetFileApisToOEM aufrufen, damit der Satz von Datei-E/A-Funktionen OEM-Zeichensatzzeichenfolgen anstelle von ANSI-Zeichensatzzeichenfolgen verwendet. Verwenden Sie die SetFileApisToANSI-Funktion , um diese Funktionen wieder auf die ANSI-Codepage festzulegen.

Wenn es sich um Befehlszeilen handelt, sollte eine Konsolenanwendung die Befehlszeile im Unicode-Format abrufen und sie dann mithilfe der relevanten Zeichen-zu-OEM-Funktionen in das OEM-Formular konvertieren. Beachten Sie auch, dass das Array im argv-Parameter der Befehlszeilenfunktion Standard in diesem Fall ANSI-Zeichensatzzeichenfolgen enthält.

Unter Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.

Technologie Unterstützt
SMB 3.0-Protokoll (Server Message Block) Ja
SMB 3.0 Transparent Failover (TFO) Ja
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) Ja
Dateisystem mit freigegebenen Clustervolumes (CsvFS) Ja
Robustes Dateisystem (Resilient File System, ReFS) Ja

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile fileapi.h (einschließlich Windows.h, WinBase.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

AreFileApisANSI

Dateiverwaltungsfunktionen

FindFirstFileA

SetConsoleCP

SetConsoleOutputCP

SetFileApisToANSI

WriteConsoleA