Qt编写的程序不加载程序当前目录下的插件问题的原因及解决办法

    最近用Qt编写的一个在一台服务器上出现qdebug()输出的汉字乱码问题,说到汉字乱码第一时间想到就是编码和字符集问题了。Qt可以使用QTextCodec类提供的三个方法去设置编码,这三个方法分别是:setCodecForCStrings、setCodecForLocale、setCodecForTr。

QTextCodec类相应的codec插件才能真正起作用,比如设置codec为'GBK'的话,就需要qcncodecs4.dll插件,需要在你程序目录新建一个codecs文件夹,并将qt安装目录中的plugins\codecs\qcncodecs4.dll拷到你程序目录的codecs文件夹。

需要特别注意的是,一定要在QApplication对象实例化之后再调用以上三个函数去设置编码,否则程序不会去加载codecs文件夹里的dll,原因是QApplication对象未实例化时,在QT查找插件目录时会忽略本地目录。

 

初稿,待完善(补上QT查找插件目录的代码)。

发表评论

电子邮件地址不会被公开。 必填项已用*标注