各位老大,同样的问题,再重复问一遍。
我vs2005+qt4.7.4编写的代码,本机运行没有问题。发布到一个没有安装vs以及qt的机器上后,汉字处理有问题。排查后发现
QTextCodec::codecForName("GB2312");
QTextCodec::codecForName("GBK");
QTextCodec::codecForName("GB18030");
上述三个返回全部为空指针。只有utf-8可用,但是由于一些方案的限制,只能使用GB2312编码。
我自己也尝试了一些方案来解决:
方案一:
在main函数中增加设置plugins 路径,并将qt安装路径下的plugins 目录拷贝到程序运行目录下,具体为plugins /codecs/,所有的插件都拷贝过来了。
QApplication a(argc, argv);
QString sPath = a.applicationDirPath();
sPath += QString("/plugins");
a.addLibraryPath(sPath);
但是结果还是那样,没有什么帮助。
我程序运行路径中没有包含中文名称。
方案二:
程序运行路径下,写了一个qt.conf文件,内容为:
[Paths]Prefix=.Libraries=../libBinaries=../binPlugins=../plugins
并在main函数中增加代码:
QDir::setCurrent(QApplication::applicatoinDirPath());
将qt安装路径下的 plugins 目录拷贝到程序运行路径的上一级目录中,文件内容保持不变。为避免意外情况,我将qt的插件在plugins 目录以及plugins/codecs路径下各放了一份,但是仍然没有什么帮助。
现在有些黔驴技穷了,请各位帮忙,看看如何解决?