SetFileApisToANSI-Funktion (fileapi.h)
Bewirkt, dass die Datei-E/A-Funktionen die ANSI-Zeichensatzcodepage für den aktuellen Prozess verwenden. Diese Funktion ist für Eingabe- und Ausgabevorgänge in der 8-Bit-Konsole nützlich.
Syntax
void SetFileApisToANSI();
Rückgabewert
Keine
Bemerkungen
Die Datei-E/A-Funktionen, deren Codepage von SetFileApisToANSI festgelegt wird, sind funktionen, die von KERNEL32.DLL exportiert werden und einen Dateinamen akzeptieren oder zurückgeben. SetFileApisToANSI legt die Codepage pro Prozess und nicht pro Thread oder Pro Computer fest.
Die SetFileApisToANSI-Funktion ergänzt die SetFileApisToOEM-Funktion , die bewirkt, dass derselbe Satz von Datei-E/A-Funktionen die OEM-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, zeigt die WriteConsoleA-Funktion die Zeichenfolge nicht ordnungsgemäß an.
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 Codepages zu lösen, 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 SetFileApisToOEM-Funktion aufrufen, damit der Satz von Datei-E/A-Funktionen OEM-Zeichensatzzeichenfolgen anstelle von ANSI-Zeichenfolgen 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 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 (include Windows.h, WinBase.h) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |