首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言中文顯示亂碼終極解決方案:編碼、字型、平台三維攻略

     編輯:C 語言問答

亂碼根因:編碼不一致

中文顯示涉及三個環節:原始碼儲存編碼、編譯器執行字元集、終端機/視窗字型支援。任一環節不匹配即產生亂碼。

平台別解決方案

Windows 控制台 (CMD / PowerShell / Windows Terminal)

  1. 原始碼儲存為 UTF-8 with BOM 或 GBK/GB2312 (Visual Studio 預設)。
  2. 程式碼開頭設定輸出代碼頁:
    #include <windows.h>
    int main() {
        SetConsoleOutputCP(65001); // UTF-8
        SetConsoleCP(65001);       // 輸入亦用 UTF-8
        printf("你好,世界!\n");
        return 0;
    }
  3. 終端機字型選用支援中文的等寬字型: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`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved