Qt 4.8.4中文顯示問題
阿新 • • 發佈:2019-02-19
問題描述
因為專案需要,重新用上了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);之後。