VOID SetFileApisToOEM(VOID);
Функция SetFileApisToOEM дополняет функцию SetFileApisToANSI, которая указывает набору файловых функций Win32 использовать кодовую страницу с кодировкой ANSI.
8-битные консольные функции используют по умолчанию кодировку OEM. Все остальные функции должны использовать кодовую страницу ANSI по умолчанию. Это означает, что строки, возвращаемые консольными функциями могут быть не корректно обработаны другими функциями, и наоборот. К примеру Если функция FindFirstFileA возвращает строку, содержащую некоторые расширенные символы ANSI, и при этом 8-битные функции установлены для использования кодировки OEM, то функция WriteConsoleA не отобразит строку корректно.
Используйте AreFileApisANSI для обнаружения в какой кодовой странице набор файловых функций работает в данный момент. Используйте SetConsoleCP и SetConsoleOutputCP для установки кодовой страницы для 8-битных консольных функций.
Для разрешения проблемы несовместимости кодовых страниц лучше всего использовать кодировку Unicode. В этом случае приложение будет более гибким. Другой способ — использовать функцию SetFileApisToOEM для указания множеству файловых функций Win32 использовать кодировку OEM. Используйте функцию SetFileApisToANSI для установки кодовой страницы обратно в ANSI.
Функции SetFileApisToANSI и SetFileApisToOEM действуют на следующее множество Win32 функций:
| Функция | Описание |
|---|---|
| _lopen | открыть существующий файл |
| CopyFile | копировать файл |
| CreateDirectory | создать каталог |
| CreateFile | создать/открыть объект (файл, канал, ...) |
| CreateProcess | создать новый процесс |
| DeleteFile | удалить файл |
| FindFirstFile | начать поиск файловых объектов |
| FindNextFile | продолжить поиск файловых объектов |
| GetCurrentDirectory | получить текущий каталог |
| GetDiskFreeSpace | получить информацию о диске |
| GetDriveType | получить типа диска |
| GetFileAttributes | получить файловые атрибуты |
| GetFullPathName | получить полный путь |
| GetModuleFileName | извлекает полный путь для указанного модуля. |
| GetModuleHandle | получить хендл запущенного модуля |
| GetSystemDirectory | возвращает путь к системного каталогу |
| GetTempFileName | создает имя для временного файла |
| GetTempPath | возвращает путь к %TEMP% каталогу |
| GetVolumeInformation | возвращает информацию о файловой системе |
| GetWindowsDirectory | возвращает путь к каталогу Windows |
| LoadLibrary | загрузить исполняемый модуль |
| LoadLibraryEx | загрузить исполняемый модуль |
| MoveFile | переименовать файл/каталог |
| MoveFileEx | переименовать файл/каталог |
| OpenFile | создать/открыть/удалить файл |
| RemoveDirectory | удалить каталог |
| SearchPath | поиск файла |
| SetCurrentDirectory | установить текущий каталог |
| SetFileAttributes | установить файловые атрибуты |
При работе с командной строкой консольное приложение может получить командную строку в Unicode и потом конвертировать ее в OEM, используя соответствующие функции. Заметьте также, что функция argv использует кодовую страницу ANSI.