共用方式為


主控台應用程式問題

8 位控制台函式會使用 OEM 代碼頁。 所有其他函式預設都會使用 ANSI 代碼頁。 這表示主控台函式傳回的字串可能無法由其他函式正確處理,反之亦然。 例如,如果 FindFirstFileA 傳回包含特定擴充 ANSI 字元的字串, WriteConsoleA 將不會正確顯示字串。

主控台應用程式的最佳長期解決方案是使用 Unicode 控制台會在使用 SetConsoleCP 和 SetConsoleOutputCP 對 UTF-8 代碼頁使用 SetConsoleCP SetConsoleOutputCP65001CP_UTF8 UTF-8 代碼頁之後,接受 API 的 W 變異或 UTF-8 編碼的 UTF-16 編碼。

在解決方案中,控制台應用程式應該使用 SetFileApisToOEM 函式。 該函式會變更相關的檔案函式,使其產生 OEM 字元集字串,而不是 ANSI 字元集字串。

以下是檔案函式:

處理命令行時,控制台應用程式應該使用相關的字元到 OEM 函式,取得 Unicode 窗體中的命令行,並將其轉換為 OEM 表體。 另請注意, argv 會使用 ANSI 字元集。