新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 解決Windows下Arm下Linux下Qt4程序的中文亂碼問題

        解決Windows下Arm下Linux下Qt4程序的中文亂碼問題

        作者: 時間:2016-11-09 來源:網絡 收藏
        ###############################################################################

        #操作系統:Win7垃圾版

        本文引用地址:http://www.104case.com/article/201611/317847.htm

        #QT: 4.8.1

        #操作系統:Winxp垃圾版

        #QT: 4.8.1

        #開發板:友善之臂Tiny6410 V1.2
        #QT: 4.6.1
        #QTE-arm: 4.7.0

        #Write By Kinglate 20130806

        ###############################################################################

        也許這個世界上沒有人會像我一樣遇到一個問題了,解決了,很開心,同時也很傷心!跨平臺編程相當苦逼,平臺是夸了,但是問題的解決方案并非夸平臺!相當頭疼。其他的不想多說,挑個最典型的(解決中午亂碼問題)跟大家分享一下,好讓大家今后能少走彎路!

        一、解決WindowsQt4程序中文亂碼問題

        1.方法一(該方法對于我的win7機器行不通,但是我的xp機器卻沒有問題,神奇吧?所以對于您的機器可能行不行。)

        在main.cpp中找到int main(intargc,char*argv[])這個入口函數,在其里面加入以下四行代碼:

        2.在main.cpp中加入#include編碼頭文件,然后在int main(intargc,char*argv[])這個入口函數,在其里面加入以下一行代碼:

        QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));

        3.(至于加到什么位置,在{}內,只要不加在returna.exec();這行代碼的后面就可以了!)完成后如下圖所示:

        4.需要使用中文的地方,還是舉個例子講解一下:

        QMessageBox::information(this, tr("連接完成"), tr("本地Ip為:")+localIpStr+tr("端口號為:")+localport,QMessageBox::Ok);

        測試結果:

        5.方法二(相當好用一步到位)

        在main.cpp中找到int main(intargc,char*argv[])這個入口函數,在其里面加入以下四行代碼:

        QTextCodec*codec=QTextCodec::codecForLocale();//設置文本為GB2312編碼

        QTextCodec::setCodecForTr(codec);//設置使用tr內的編碼

        QTextCodec::setCodecForLocale(codec);//設置本地編碼

        QTextCodec::setCodecForCStrings(codec);//設置字符串編碼

        (至于加到什么位置,在{}內,只要不加在returna.exec();這行代碼的后面就可以了!)

        完成后如下圖所示:

        需要使用中文的地方,還是舉個例子講解一下:

        QMessageBox::information(this, tr("連接完成"), tr("本地Ip為:")+localIpStr+tr("端口號為:")+localport,QMessageBox::Ok);

        測試結果:

        二、解決Arm下Qt4程序的中文亂碼問題

        方法一:本人以前常用的

        1.在.cpp(非main.cpp)中加入#include //Qt的字符編碼頭文件

        2.在每個需要用到中文的地方所在的函數體內設置中文字體編碼,放在該函數體的第一句即可:

        QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));//設置中文字體編碼

        需要輸入中文時要用tr("我是中文!")

        3.還是舉個例子講解一下:

        QMessageBox::warning(this, tr("Waring"),tr("輸入用戶ID或者密碼錯誤,請重新輸入!"),QMessageBox::Yes);

        測試結果:

        方法二:(不一定行)

        4.這個方法相當簡單,在.cpp(非main.cpp)處,哪兒需要用到中文時trUtf8()函數即可,如:trUtf8(“我是中文!”)頭文件都不需要加!

        5.還是舉個例子講解一下:

        QMessageBox::information(this, trUtf8("打開成功"), trUtf8("已經成功打開串口:")+ui->portName_b->currentText(), QMessageBox::Ok);

        測試結果:

        三、解決Linux下Qt4程序的中文亂碼問題

        Linux下Qt4程序用得少,懶得搞,估計跟Windows下差不多,自己百度去吧!



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 民乐县| 融水| 甘谷县| 泰顺县| 庆云县| 姚安县| 海盐县| 新昌县| 南郑县| 新闻| 塔河县| 调兵山市| 江都市| 婺源县| 金溪县| 开鲁县| 昌平区| 宁南县| 南安市| 盖州市| 江安县| 灵璧县| 四平市| 江门市| 香河县| 桂林市| 翁牛特旗| 忻城县| 宝坻区| 镇江市| 大新县| 班玛县| 江华| 凉城县| 乌拉特前旗| 津市市| 许昌县| 韶山市| 许昌市| 昌邑市| 邳州市|