Visual Studio 中文显示乱码问题
今天在碼云上Fork了一個開源工程,編譯環境是Visual Studio C++, 由于自己本地平臺主要是進行Linux開發,平時文檔編碼格式都是utf-8的,編譯沒問題,但運行起來就是亂碼,就像下圖一樣。
碰到這個問題,根據經驗很確定就是文件編碼問題,于是使用工具,將工程文件批量進行轉碼,由GB2312變換到utf-8。設置完成后標題欄中文正常顯示了,但是里面輸入文字,例如:
AfxMessageBox(_T("加載Duilib屬性文件失敗!"));
顯示仍然是亂碼,于是乎想到了翻閱MSDN, 終于查找了相關資料,Visual Studio 對于UTF-8格式支持不好,在VS2015版本(Visual Studio 2015 Update 2),增加一個編譯選項/utf-8,作用就是將源碼字符集和執行文件字符集指定為UTF-8。加上這個編譯選項后,再重新編譯運行,程序正確輸出中文,問題解決。
/utf-8 (Set Source and Executable character sets to UTF-8)
總結
中文亂碼問題,分析原因在于:
Visual Studio對于不帶BOM的UTF-8文件,默認會根據本地locale的設置來決定文件的編碼(對于簡體中文系統,就是GBK)。因此對于UTF-8 without BOM的代碼文件輸出中文就是亂碼。[^1]
解決方法,分兩步:
- 使用批量轉換工具講文件編碼格式轉換為utf-8 格式,這樣文件里面中文字符就能正常顯示了,不會在編輯起來還顯示亂碼, 轉換工具見我的另一篇文章: 批量轉換文件編碼;
- 編譯選項里面加上/utf-8, 這樣將執行文件字符集指定為UTF-8, 與源碼文件編碼方式一樣了。
參考文檔
[^1] MSVC中C++ UTF8中文編碼處理探究
[^2] shell 批量轉換文件編碼
[^3] /utf-8 (Set Source and Executable character sets to UTF-8)
總結
以上是生活随笔為你收集整理的Visual Studio 中文显示乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell 批量转换文件编码
- 下一篇: 让我们一起认识一下Nodejs