SetFileApisToANSI

【勇芳软件工作室】汉化HomePreviousNext

SetFileApisToANSI函数导致一组Win32文件函数使用ANSI字符集代码页。此函数对于8位控制台输入和输出操作非常有用。

VOID SetFileApisToANSI(VOID)

参数

此函数无参数。

返回值

该函数没有返回值。

备注

SetFileApisToANSI功能补充了SetFileApisToOEM功能,这使得同一组Win32文件功能使用OEM字符集代码页。

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

使用AreFileApisANSI功能确定文件功能集当前使用的代码页。使用SetConsoleCPSetConsoleOutputCP功能设置8位控制台功能的代码页。

为了解决代码页不兼容的问题,最好使用Unicode作为控制台应用程序。使用Unicode的控制台应用程序比使用8位控制台功能的应用程序更加通用。除了该解决方案之外,控制台应用程序可以调用SetFileApisToOEM函数,使Win32文件函数集合使用OEM字符集字符串而不是ANSI字符集字符串。使用SetFileApisToANSI功能将这些功能设置回ANSI代码页。

SetFileApisToANSISetFileApisToOEM影响这些Win32功能:

_lopenGetDriveTypeLoadLibrary
CopyFileGetFileAttributesLoadLibraryEx
CreateDirectoryGetFullPathNameMoveFile
CreateFileGetModuleFileNameMoveFileEx
CreateProcessGetModuleHandleOpenFile
DeleteFileGetSystemDirectoryRemoveDirectory
FindFirstFileGetTempFileNameSearchPath
FindNextFileGetTempPathSetCurrentDirectory
GetCurrentDirectoryGetVolumeInformationSetFileAttributes
GetDiskFreeSpaceGetWindowsDirectory

处理命令行时,控制台应用程序应该以Unicode格式获取命令行,然后使用相关的字符到OEM功能将其转换为OEM表单。还要注意ARGV函数使用ANSI字符集。

也可以看看

AreFileApisANSI,FindFirstFileA, SetFileApisToOEM, SetConsoleCP,SetConsoleOutputCP, WriteConsoleA