天天看點

qt中 中文亂碼問題

qt是跨平台的開發平台。他的編譯器是要手動配置的,在window下一般我們用virtual stuido中cl,或者Mingw中的g++

在linux中一般采用Linux下的g++

而  微軟VS的中的cl,Mingw中的g++,Linux下的g++),源代碼分别采用 GBK 和 不帶BOM的UTF-8  以及 帶BOM的UTF-8 這3中編碼進行儲存。

也就是說編譯器的編碼方式是不同的,是以大部分情況我們在qt代碼中寫中文時就會有亂碼

網上搜尋得出  

這兩段代碼可以解決大部分的亂碼問題。(記得加入#include<QTextCodec> 頭檔案引用)

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

其實上面的代碼的意思是告訴編譯器我們用什麼樣的編碼方式來解讀我們寫的代碼。 一般在使用微軟的編譯器 我們在main函數中

使用g++編譯器我們使用QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

第2種方法

Qt5中,一些函數已經被取消了,而且網上很多都是不推薦這種寫法。是以當時找到的是自行轉換:

qt中 中文亂碼問題

其實也可以通過QString定義的靜态函數,先轉換成Unicode類型:

QString::fromLocal8Bit("提示")

不過在Qt5中,提供了一個專門的處理宏,來支援中文常量,那就是QStringLiteral,但它隻能處理常量。

qt中 中文亂碼問題

對于中文常量,使用QStringLiteral即可解決,對于字元串變量,使用QString自帶函數也可以輕松解決。

QQ:519841366

本頁版權歸作者和部落格園所有,歡迎轉載,但未經作者同意必須保留此段聲明,

且在文章頁面明顯位置給出原文連結,否則保留追究法律責任的權利

繼續閱讀