SetFileApisToOEM 函式 (fileapi.h)

使進程的檔案 I/O 函式使用 OEM 字元集字碼頁。 此函式適用于 8 位主控台輸入和輸出作業。

Syntax

void SetFileApisToOEM();

傳回值

備註

SetFileApisToOEM所設定字碼頁的檔案 I/O 函式是由接受或傳回檔案名的 KERNEL32.DLL 所匯出的函式。 SetFileApisToOEM 會為每個進程設定字碼頁,而不是每個執行緒或每部電腦。

SetFileApisToOEM函式是由SetFileApisToANSI函式所補充,這會導致相同的檔案 I/O 函式使用 ANSI 字元集字碼頁。

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

另請參閱

AreFileApisANSI

檔案管理功能

FindFirstFileA

SetConsoleCP

SetConsoleOutputCP

SetFileApisToANSI

WriteConsoleA