亂碼根因:編碼不一致
中文顯示涉及三個環節:原始碼儲存編碼、編譯器執行字元集、終端機/視窗字型支援。任一環節不匹配即產生亂碼。
平台別解決方案
Windows 控制台 (CMD / PowerShell / Windows Terminal)
- 原始碼儲存為 UTF-8 with BOM 或 GBK/GB2312 (Visual Studio 預設)。
- 程式碼開頭設定輸出代碼頁:
#include <windows.h>
int main() {
SetConsoleOutputCP(65001); // UTF-8
SetConsoleCP(65001); // 輸入亦用 UTF-8
printf("你好,世界!\n");
return 0;
}
- 終端機字型選用支援中文的等寬字型:Consolas + YaHei Consolas Hybrid、Cascadia Code、Maple Mono、Sarasa Term。
Linux / macOS 終端機
系統預設 UTF-8,原始碼儲存為 UTF-8 即可直接正常顯示,無需額外設定。
圖形介面 (GUI) 程式
- Win32 API:使用 Unicode 版本函式(以
W 結尾,如 MessageBoxW),字串前加 L 前綴或使用 TEXT() / _T() 宏。 - 跨平台庫:Qt、GTK、wxWidgets、Dear ImGui 內部皆使用 UTF-8/UTF-16,直接支援中文。
VS Code / CLion / Visual Studio 設定檢查清單
- 檔案編碼:右下角點擊編碼選「UTF-8 with BOM」或「GBK」。
- 終端機編碼:VS Code `settings.json` 加入 `"terminal.integrated.windowsExec": "cmd.exe", "terminal.integrated.env.windows": {"CHCP": "65001"}`。
- 編譯器參數:GCC/Clang 加 `-fexec-charset=UTF-8 -finput-charset=UTF-8`;MSVC 預設處理 BOM,無 BOM 時可用 `/source-charset:utf-8 /execution-charset:utf-8`。