1. 程式人生 > >Qt 4.8.4中文顯示問題

Qt 4.8.4中文顯示問題

問題描述

      因為專案需要,重新用上了Qt 4.8.4,在之前的一段時間內,我一直是在使用Qt 5。實際上,本來專案是要使用Qt 5的,但是遇到幾個莫名其妙的問題,解決辦法繁瑣,不利於後期專案的部署,所以採用Qt 4.8.4。

      好的,迴歸正題,使用的過程中碰到了老問題:Linux環境下中文顯示問題。這個問題其實碰到很多次了,每次還得去網上找解決辦法,還是自己記錄一下,這樣以後更方便。

     我的系統環境是Ubuntu,在Windows下的解決辦法又是不一樣的;

解決辦法

      這種問題幾乎都是編碼問題導致的,這裡就圍繞編碼這方面來講。當然,還有可能是你自己的Qt沒有編譯、安裝好,甚至是Linux系統出現一些問題,在這裡先不講這些。

      編碼的話,一般常用的是“gb2312”,“utf-8”,我推薦使用“utf-8”。

      第一次我的解決辦法是這樣的:

QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));
      這個辦法在大部分情況下,使用都沒有任何問題,但是偏偏讓我遇到特例了。是這樣的:在一個自啟動程式中呼叫Qt程式的時候,中文不顯示。在這之前,我已經試過,直接執行那個程式並呼叫Qt程式,這樣是正確的。這就有點鬱悶了,但我相信還是編碼沒弄好。

      最終找到了正確的解決辦法:

QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
      上面這段程式碼需要加在QApplication a(argc, argv);之後。