问题:
如下代码片断,
int main(…)
{
QTextCodec* gbkCodec=QTextCodec::codecForName("GBK");
Q_CHECK_PTR(gbkCodec);
QCoreApplication a(…);
…
return a.exec();
}
gbkCodec返回null。换成 除cn, jp, ko之外的编码,如 windows-1258,可以成功返回 codec! 如果不用codecForName,换成codecForLocale(),也将返回指向 System的codec,没有问题。检查codec plugins,确认有 qcncodecs.dll。
解决方案:
将 codecForName()一句移到 QCoreApplication a(…)一句之后。
原因不详。发现是内置的codec 这样是可以返回的,但plugin codec不能放在这个位置。
Environment: Qt 4.1.1