SetFileApisToOEM功能使一组Win32文件功能使用OEM字符集代码页。此函数对于8位控制台输入和输出操作非常有用。
VOID SetFileApisToOEM(VOID)
参数
此函数无参数。
返回值
该函数没有返回值。
备注
SetFileApisToOEM功能由SetFileApisToANSI功能补充,导致同一组Win32文件功能使用ANSI字符集代码页。
默认情况下,8位控制台功能使用OEM代码页。所有其他功能默认使用ANSI代码页。这意味着控制台功能返回的字符串可能无法被其他函数正确处理,反之亦然。例如,如果FindFirstFileA函数返回一个包含某些扩展ANSI字符的字符串,并且8位控制台功能设置为使用OEM代码页,那么WriteConsoleA函数将不会正确显示字符串。
使用AreFileApisANSI功能确定文件功能集当前使用的代码页。使用SetConsoleCP和SetConsoleOutputCP功能设置8位控制台功能的代码页。
为了解决代码页不兼容的问题,最好使用Unicode作为控制台应用程序。使用Unicode的控制台应用程序比使用8位控制台功能的应用程序更加通用。除了该解决方案之外,控制台应用程序可以调用SetFileApisToOEM函数来使该组Win32文件函数使用OEM字符集字符串而不是ANSI字符集字符串。使用SetFileApisToANSI功能将这些功能设置回ANSI代码页。
SetFileApisToANSI和SetFileApisToOEM影响这些Win32功能:
处理命令行时,控制台应用程序应该以Unicode格式获取命令行,然后使用相关的字符到OEM功能将其转换为OEM表单。还要注意ARGV函数使用ANSI字符集。
也可以看看
AreFileApisANSI,FindFirstFileA, SetConsoleCP,SetConsoleCP, SetConsoleOutputCP, SetFileApisToANSI, WriteConsoleA