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

VS2015 MFC 字符串顯示亂碼:_T 宏與字符集設置完整指南

     編輯:程式設計疑難解答

問題現象

MFC 程序中 AfxMessageBox("中文") 顯示亂碼,單字符正常,雙字符/漢字亂碼。

根因分析

  • 項目設置「使用 Unicode 字符集」,但字符串字面量未加 _T 宏
  • "中文" 被編譯為多字節(ANSI),傳給期望 wchar_t* 的 Unicode API
  • #pragma execution_character_set("utf-8") 僅影響源文件編碼,不影響字面量類型

解決方案

  1. 立即生效:所有字符串加 _T 或 L 前綴
    AfxMessageBox(_T("中文正常"));  // 推薦
    AfxMessageBox(L"中文正常");    // 直接寬字符
    
  2. 項目級修復:屬性頁 → 高級 → 字符集改為「多字節字符集」(不推薦新項目)
  3. 源文件保存:另存為 → 編碼選 Unicode (UTF-16 LE) 或 UTF-8 with BOM

最佳實踐

  • 新項目強制 Unicode,統一使用 _T() 宏
  • 資源文件 (.rc) 中字符串自動處理
  • 避免混用 char* 和 wchar_t*,使用 CString 封裝

驗證方法

在監視窗口輸入 (wchar_t*)_T("測試") 查看內存值是否為正確 Unicode 編碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved