QT中文顯示亂碼解決
轉自:http://www.cnblogs.com/qq78292959/archive/2012/05/30/2527099.html
問題如下:
1.中文顯示亂碼
2.資料庫連線不上
問題一:
但是如果我們的軟體只執行在中文系統下,最簡單的方法:在main函式中呼叫QTextCodec::setCodecForTr( QTextCodec::codecForName("GBK") );就可以了。
記得這句要在所有使用tr的語句前呼叫。以後在需要使用中文的地方使用tr("中文字元");就可以了。但事情真的這麼簡單嗎?當我將一個測試程式拷貝到一臺沒裝過Qt的電腦上時,tr中的字都顯示不了了。奇怪的是用Creater IDE生成的UI介面中的漢字能正常顯示。看了qmake生成ui的.h檔案,發現那些中文字元已經被自動轉換成UTF8 encoding了。奇怪的是,QTextCodec::setCodecForTr( QTextCodec::codecForName("GBK") );改為QTextCodec::setCodecForTr(
QTextCodec::codecForName("utf-8") );也不行。沒辦法了,查資料,然後看了原始碼。折騰了N久終於搞清楚了。
原來Codecs是以plugin的形式被呼叫的,顯示中文的codec plugin檔案是qcncodecs4.dll。裡面有QGb18030Codec、QGbkCodec和QGb2312Codec三個類。注意,後兩個類是從第一個類派生的,因為它們的字元只是Gb18030的特定子集。GBK和GB2312只是為了相容舊的系統和軟體。大家以後可以直接使用GB18030。這個類真正的“肉”就是巨長的一個編碼陣列。
既然找到了正主兒,那麼問題也就迎刃而解了。將qcncodecs4.dll拷入目標機器的特定路徑,如果你開發的電腦Qt安裝目為C:\Qt的話,qcncodecs4.dll應該拷入目標電腦的C:\Qt\Plugins\Codecs。執行程式,看到了久違的漢字。
有沒有更好的方法呢?在Qt(Cute)中當然有了
感謝Qt的plugin系統,將qcncodecs4.dll拷貝到執行程式目錄下的特定目錄,如執行程式完整路徑為C:\MyApp\MyApp.exe,那麼qcncodecs4.dll應拷貝至C:\MyApp\Plugins\Codecs下,然後在main函式中加入下面的程式碼:
QApplication a(argc, argv);
QString sPath = a.applicationDirPath();
sPath += QString("/plugins");
a.addLibraryPath(sPath);
一句話解決問題一:首先,在釋出的應用程式資料夾下建立Plugins\Codecs
其次,將qcncodecs4.dll庫檔案放到Plugins\Codecs目錄下
問題一補充:
由於本人開發是在windows下開發,當移植到ARM板上時會顯示亂碼 即使我們加入QTextCodec::setCodecForTr( QTextCodec::codecForName("GBK") );這條語句也還是一樣的亂碼。因為不同平臺字型編碼格式不同。
解決:將windows字型庫拷貝到開發板fonts/目錄下即可。同時支援最大字型顯示
問題二:
程式使用sqlilte資料庫,標機沒有這個資料庫驅動。所以導致連線資料庫的時候連線不上。
解決辦法如下:
1.在釋出的應用程式資料夾下建立如下資料夾Plugins\sqldrivers
2.到QT安裝目錄下,例如本人安裝目錄C:\Qt\2009.05\qt\plugins\sqldrivers,將此目錄下的所有檔案拷貝到1目錄下
相關文章
- 解決SecureCRT中文顯示亂碼Securecrt
- navicat for mysql顯示中文亂碼解決方案MySql
- toad 中文顯示亂碼解決方法
- 解決MySQL中文亂碼和插入中文不顯示的方法MySql
- git操作時中文顯示亂碼的解決方法Git
- 解決ssh連線CentOS後中文顯示亂碼CentOS
- Mac下navicat for mysql中文顯示亂碼解決方法MacMySql
- 解決Hive使用desc顯示中文註釋亂碼Hive
- 解決ssh終端CentOS後中文顯示亂碼CentOS
- html裡顯示中文亂碼的解決辦法HTML
- LINUX SSH顯示中文亂碼問題解決Linux
- LiveCharts中文顯示亂碼問題的解決Echarts
- oracle中文顯示亂碼Oracle
- secureCRT顯示亂碼解決方法Securecrt
- linux中顯示中文亂碼如何解決?Linux
- Redis中文顯示為Unicode編碼 亂碼的解決辦法RedisUnicode
- pl/sql developer中文顯示亂碼SQLDeveloper
- ubuntu 中文顯示亂碼問題Ubuntu
- 嵌入式QT SQL中文亂碼問題解決QTSQL
- 【Qt】UI顯示中文QTUI
- 解決CentOS 中顯示亂碼問題CentOS
- matplotlib 圖示 中文亂碼, 與 wordcloud 詞雲圖 中文亂碼 解決方法Cloud
- hive表查詢中文顯示亂碼Hive
- Navicat for mysql 顯示中文亂碼問題MySql
- cmd 命令列模式下輸出中文時顯示亂碼的解決方案命令列模式
- web專案顯示亂碼解決方案整理Web
- 生僻字顯示?的字元亂碼解決字元
- RHEL中文亂碼解決
- HttpClient 解決中文亂碼HTTPclient
- 如何解決python 圖表中文顯示亂碼問題Python
- Mysql輸出中文顯示亂碼處理MySql
- SecureCRT遠端連線顯示中文亂碼Securecrt
- HPUX下,解決xmanager的顯示亂碼問題UX
- navicat 表中文顯示? 解決
- Ubuntu中解決pdf中文亂碼或不顯問題Ubuntu
- request/response解決中文亂碼
- eclipse中文亂碼解決Eclipse
- myeclipse解決中文亂碼Eclipse