Поделиться через


Функция 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

См. также

AreFileApisANSI

Функции управления файлами

FindFirstFileA

SetConsoleCP

SetConsoleOutputCP

SetFileApisToANSI

WriteConsoleA