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