環境:win7 VS2010,Qt (4.8.6) 以下代碼//為運行奇怪的地方
QTextCodec *p1 = QTextCodec::codecForName("UTF-8");
QTextCodec *p2 = QTextCodec::codecForName("system");
QTextCodec *p3 = QTextCodec::codecForName("GB18030"); //p3得到NULL
QTextCodec *p4 = QTextCodec::codecForName("GBK"); //p4得到NULL
QTextCodec *p5 = QTextCodec::codecForName("gb2312"); //p5得到NULL
QTextCodec *p6 = QTextCodec::codecForLocale();
QList<QByteArray> array = QTextCodec::availableCodecs();
for(int i=0; i<array.count(); i++)
{
qDebug()<<array.at(i);//顯示本程式支持的所有編碼串名,沒有GB打頭的中文
}
檢查過D:\Qt\4.8.6\plugins\codecs
有 qcncodecs4.dll、qcncodecsd4.dll 及對應lib檔案
另外一個人的電腦也是這環境,其p3,p4,p5不是NULL
網上搜一天了,沒有發現有效方法,求救啊
uj5u.com熱心網友回復:
http://www.tc5u.com/mobile/129221.htm在QT的安裝目錄中,有個plugins\codecs
目錄,里面有幾個和 亞洲文字編碼相關的 dll 檔案。其中和中文編碼相關的檔案是:
qcncodecs4.dll(release版本),qcncodecsd4.dll(debug)版本。
在生成的qt程式所在目錄下面,建立一個 plugin 目錄,然后再在 plugin 目錄下面建立一個 codecs 目錄,
然后把 qcncodecs4.dll 或 qcncodecsd4.dll(如果需要除錯的話就用這個檔案) 拷貝到 codecs目錄下面。
然后在main 函式里面 加上如下紅色部分的代碼
QApplication a(argc, argv);
QString sPath = a.applicationDirPath();
sPath += QString("/plugin/");
a.addLibraryPath(sPath);
這里還有一個要注意的地方就是: 一定要把檔案放到 codecs 這個名字的目錄下面,codecs 不能改為其他名字。 然后指定 加載 動態庫目錄的時候, 一定只能是加載 codecs 目錄的上一級目錄,也就是plugin 目錄,
這樣 QT程式就會自動在 plugin 目錄下的 codecs 目錄下面加載qcncodecs4.dll 這個庫。
然后,這個問題就解決了。
uj5u.com熱心網友回復:
plugin目錄在工程目錄下,與本cpp檔案同一級,路徑寫成下面這樣更好一點QString sPath = QString("./plugin/");
a.addLibraryPath(sPath);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71230.html
