SetFileApisToANSI 函式 (fileapi.h)
導致檔案 I/O 函式使用目前進程的 ANSI 字元集字碼頁。 此函式適用于 8 位主控台輸入和輸出作業。
Syntax
void SetFileApisToANSI();
傳回值
無
備註
SetFileApisToANSI所設定字碼頁的檔案 I/O 函式是由接受或傳回檔案名的 KERNEL32.DLL 匯出的函式。 SetFileApisToANSI 會為每個進程設定字碼頁,而不是每個執行緒或每部電腦。
SetFileApisToANSI函式會補充SetFileApisTo OEM函式,這會導致相同的檔案 I/O 函式集使用 OEM 字元集字碼頁。
8 位主控台函式預設會使用 OEM 字碼頁。 所有其他函式預設都會使用 ANSI 字碼頁。 這表示主控台函式傳回的字串可能無法由其他函式正確處理,反之亦然。 例如,如果 FindFirstFileA 函式傳回包含特定擴充 ANSI 字元的字串,而 8 位主控台函式會設定為使用 OEM 字碼頁, 則 WriteConsoleA 函式不會正確顯示字串。
使用 AreFileApisANSI 函式來判斷檔案 I/O 函式集目前使用的字碼頁。 使用SetConsoleCP 和 SetConsoleOutputCP函式來設定 8 位主控台函式的字碼頁。
若要解決字碼頁不相容的問題,最好是針對主控台應用程式使用 Unicode。 使用 Unicode 的主控台應用程式比使用 8 位主控台函式的主控台應用程式更有彈性。 在解決方案中,主控台應用程式可以呼叫 SetFileApisTo OEM 函式,使檔案 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) | 是 |
叢集共用磁片區檔案系統 (CsvFS) | 是 |
彈性檔案系統 (ReFS) | 是 |
需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | fileapi.h (包括 Windows.h、WinBase.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |