Функция SetFileApisToOEM (fileapi.h)
Заставляет функции файлового ввода-вывода для процесса использовать кодовую страницу кодировки OEM. Эта функция полезна для операций ввода и вывода в 8-разрядной консоли.
Синтаксис
void SetFileApisToOEM();
Возвращаемое значение
None
Remarks
Функции файлового ввода-вывода, кодовая страница которых задается с помощью SetFileApisToOEM , являются функциями, экспортированными KERNEL32.DLL, которые принимают или возвращают имя файла. SetFileApisToOEM задает кодовую страницу для каждого процесса, а не для потока или компьютера.
Функция SetFileApisToOEM дополняется функцией SetFileApisToANSI , которая заставляет тот же набор функций файлового ввода-вывода использовать кодовую страницу кодировки ANSI.
По умолчанию 8-разрядные функции консоли используют кодовую страницу OEM. Все остальные функции по умолчанию используют кодовую страницу ANSI. Это означает, что строки, возвращаемые функциями консоли, могут неправильно обрабатываться другими функциями и наоборот. Например, если функция FindFirstFileA возвращает строку, содержащую определенные расширенные символы ANSI, а 8-разрядные функции консоли настроены на использование кодовой страницы OEM, функция WriteConsoleA не будет отображать строку должным образом.
Используйте функцию AreFileApisANSI, чтобы определить, какую кодовую страницу использует набор функций файлового ввода-вывода. Используйте функции SetConsoleCP и SetConsoleOutputCP , чтобы задать кодовую страницу для 8-разрядных функций консоли.
Чтобы решить проблему несовместимости кодовых страниц, лучше всего использовать Юникод для консольных приложений. Консольные приложения, использующие Юникод, гораздо более универсальны, чем те, которые используют 8-разрядные консольные функции. За исключением этого решения, консольное приложение может вызывать функцию SetFileApisToOEM , чтобы в наборе функций файлового ввода-вывода использовались строки кодировки OEM, а не строки кодировки ANSI. Используйте функцию SetFileApisToANSI, чтобы вернуть эти функции на кодовую страницу ANSI.
При работе с командными строками консольное приложение должно получить командную строку в форме Юникода, а затем преобразовать ее в форму OEM с помощью соответствующих функций преобразования символов в OEM. Обратите внимание также, что массив в параметре argv функции командной строки main содержит строки кодировки ANSI в данном случае.
В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Да |
SMB 3.0 Transparent Failover (TFO) | Да |
SMB 3.0 с масштабируемыми общими папками (SO) | Да |
Файловая система общего тома кластера (CSVFS) | Да |
Восстанавливаемая файловая система (ReFS) | Да |
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | fileapi.h (включая Windows.h, WinBase.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |