Qt中文亂碼問題解決辦法

來源:互聯網
上載者:User
  也許你在用這個方法實現中文化,但它確實不夠嚴謹 Laguage» C++ Title» 出現頻率最高的辦法 #include <QTextCodec>   int main(int argc, char *argv[])  {              QApplication app(argc, argv);              //設定中文開始            QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));             //設定中文結束            return app.exec();   }  


很多地方都會告訴你,這樣可以實現QT支援中文,包括我看的教程書上也是,他甚至告訴我要支援中文必須加入這段代碼,但我想告訴你,這個辦法是有問題的,而且這個問題還不小。我在兩台同樣是XP系統的機子上移植就出現了中文亂碼問題,而且所有中文都是用了tr()的。所以請別迷信那些教程,實踐才是真理。 你可以嘗試這個方法 Laguage» C++ Title» #include <QTextCodec>   int main(int argc, char *argv[])  {              QApplication app(argc, argv);              //設定中文開始            QTextCodec *codec = QTextCodec::codecForName("GB2312");              QTextCodec::setCodecForLocale(codec);              QTextCodec::setCodecForCStrings(codec);              QTextCodec::setCodecForTr(codec);              //設定中文結束            return app.exec();   }  

雖然這個方法看似更為嚴謹,你可以嘗試,不過這麼寫還是會有問題,至少沒有解決我的問題。這也是我網上看到的出現頻率也挺高的方法,不過我想說的是:其實這個辦法治標不治本,因為它後面只是對拓寬對中文支援的範圍,而一般我們都建議把中文寫在tr(“”)裡。 推薦個比較保險的辦法 Laguage» C++ Title» 我推薦的方法 int main(int argc, char *argv[])  {     QApplication a(argc, argv);     QTextCodec *codec = QTextCodec::codecForName("System");    //擷取系統編碼     QTextCodec::setCodecForLocale(codec);     QTextCodec::setCodecForCStrings(codec);     QTextCodec::setCodecForTr(codec);     return a.exec(); }

這裡擷取了系統字型編碼,解決了我的問題,個人也覺得這個辦法應該是個不錯的解決方案。 也可能是字型選擇不當造成的亂碼

如果你始終解決不了亂碼問題,可以嘗試設定下字型,但其實是否是字型造成的亂碼的方法很簡單,如果出現的是一個個方塊,便是字型設定不當,否則,優先考慮編碼設定。

 

轉自 http://www.ctogo.net/313.html































































聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.