setFileApisToANSI 函数 (fileapi.h)

使文件 I/O 函数对当前进程使用 ANSI 字符集代码页。 此函数适用于 8 位控制台输入和输出操作。

语法

void SetFileApisToANSI();

返回值

备注

代码页由 SetFileApisToANSI 设置的文件 I/O 函数是由接受或返回文件名的 KERNEL32.DLL 导出的函数。 SetFileApisToANSI 设置每个进程的代码页,而不是每个线程或每台计算机。

SetFileApisToANSI 函数补充了 SetFileApisToOEM 函数,这会导致同一组文件 I/O 函数使用 OEM 字符集代码页。

默认情况下,8 位控制台函数使用 OEM 代码页。 默认情况下,所有其他函数都使用 ANSI 代码页。 这意味着控制台函数返回的字符串可能无法由其他函数正确处理,反之亦然。 例如,如果 FindFirstFileA 函数返回包含某些扩展 ANSI 字符的字符串,并且 8 位控制台函数设置为使用 OEM 代码页,则 WriteConsoleA 函数无法正确显示该字符串。

使用 AreFileApisANSI 函数确定文件 I/O 函数集当前使用的代码页。 使用 SetConsoleCPSetConsoleOutputCP 函数设置 8 位控制台函数的代码页。

若要解决代码页不兼容的问题,最好对控制台应用程序使用 Unicode。 使用 Unicode 的控制台应用程序比使用 8 位控制台功能的控制台应用程序多用途得多。 除该解决方案外,控制台应用程序可以调用 SetFileApisToOEM 函数,使文件 I/O 函数集使用 OEM 字符集字符串而不是 ANSI 字符集字符串。 使用 SetFileApisToANSI 函数将这些函数设置回 ANSI 代码页。

处理命令行时,控制台应用程序应获取 Unicode 格式的命令行,然后使用相关的字符到 OEM 函数将其转换为 OEM 形式。 另请注意,在这种情况下,命令行main函数的 argv 参数中的数组包含 ANSI 字符集字符串。

在 Windows 8 和 Windows Server 2012 中,此函数由以下技术支持。

技术 支持
服务器消息块 (SMB) 3.0 协议
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CSV)
弹性文件系统 (ReFS)

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 fileapi.h (包括 Windows.h、WinBase.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

AreFileApisANSI

文件管理函数

FindFirstFileA

SetConsoleCP

SetConsoleOutputCP

SetFileApisToOEM

WriteConsoleA