Qt5解決一切中文亂碼問題

編碼知識科普

Qt常見的兩種編碼是:UTF-8和GBK
★UTF-8:Unicode TransformationFormat-8bit,允許含BOM,但通常不含BOM。是用以解決國際上字符的一種多字節編碼,它對英文使用8位(即一個字節),中文使用24爲(三個字節)來編碼。UTF-8包含全世界所有國家需要用到的字符,是國際編碼,通用性強。UTF-8編碼的文字可以在各國支持UTF8字符集的瀏覽器上顯示。如,如果是UTF8編碼,則在外國人的英文IE上也能顯示中文,他們無需下載IE的中文語言支持包。
★GBK是國家標準GB2312基礎上擴容後兼容GB2312的標準。GBK的文字編碼是用雙字節來表示的,即不論中、英文字符均使用雙字節來表示,爲了區分中文,將其最高位都設定成1。GBK包含全部中文字符,是國家編碼,通用性比UTF8差,不過UTF8佔用的數據庫比GBD大。GBK是GB2312的擴展,除了兼容GB2312外,它還能顯示繁體中文,還有日文的假名。
★GBK、GB2312等與UTF8之間都必須通過Unicode編碼才能相互轉換:
GBK、GB2312 --> Unicode -->UTF8
UTF8 --> Unicode --> GBK、GB2312
★在簡體中文windows系統下,ANSI編碼代表GBK/GB2312編碼,ANSI通常使用0x80~0xFF範圍的2個字節來表示1箇中文字符。0x00~0x7F之間的字符,依舊是1個字節代表1個字符。Unicode(UTF-16)編碼則所有字符都用2個字節表示。

 

源代碼.h .cpp 全部轉換爲utf-8bom 格式,ui文件 pro文件無需轉換否則報錯。批量轉換方法見:https://blog.csdn.net/qing666888/article/details/78333612

在.pro文件中增加如下,啓用預編譯頭stable

 

CONFIG+=precompile_header  
PRECOMPILED_HEADER=stable.h 

增加stable.h,裏面新增下面的代碼

#if defined(_MSC_VER) && (_MSC_VER >= 1600)
    #pragma execution_character_set("utf-8")
#endif

中文字符串直接寫即可,無需各種嵌套轉換,兼容MinGW  VS 編譯器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章