測試環境:qt5.9.6 ,使用vs2017的編譯器。
一、亂碼現象:
1.源**中的中文顯示亂碼
2.編譯時出現「常量中有換行符"的警告。
3.執行時軟體介面中文顯示亂碼
二、解釋:
1.qtcreator編輯器預設採用utf-8編碼讀取檔案。vs預設採用本地編碼(我們使用的windows一般為gb2312)
用qtcreator讀取vs建立的檔案則會出現衝突。
2.msvc編譯檔案時根據原始碼檔案有無bom來定義原始碼字符集,如果有bom就按bom解釋編碼,如果沒有就使用本地字符集。
3.msvc的執行字符集預設是本地字符集。
使用utf-8 + bom編碼 (utf-8跨平台)
1.把源**的檔案轉化成utf-8 (帶bom)
2.在使用中文的檔案中加上:
#if _msc_ver >= 1600
#pragma execution_character_set("utf-8")
#endif
告訴msvc編譯器,執行字符集是utf-8。
注:使用utf-8(bom)的原始碼檔案,用mingw編譯時中文也是正常的。
Qt中文亂碼的幾種情況
測試環境 qt5.9.6 使用vs2017的編譯器。一 亂碼現象 1.源 中的中文顯示亂碼 2.編譯時出現 常量中有換行符 的警告。3.執行時軟體介面中文顯示亂碼 二 解釋 1.qtcreator編輯器預設採用utf 8編碼讀取檔案。vs預設採用本地編碼 我們使用的windows一般為gb2312 ...
Nokogiri 中文亂碼的幾種情況
color red 更新 color 2011 11 15 有些不是ie上的了 如果不確定目標是什麼編碼,ruby1.9開始可以用string類內建的encoding來得到編碼。puts iconv.iconv utf 8 doc.to s.encoding.to s,doc 使用 ignore忽略...
qt 中文亂碼 Qt中文亂碼問題
接觸了qt,由於習慣中vs,如果使用vs寫qt 剛接觸很快就發現有中文亂碼問題,我的解決方法如下 新建乙個標頭檔案,比如qtchcharset.h,標頭檔案中內容如下 pragma once ifdef q os win q os win 新增後支援gb2312,utf 8 bom,unicode ...