本机上运行正常,换到其他机器上就出中文乱码
编写了一个读ini文件的小程序
有Codecs的设置,发布的时候也加了codecs文件夹,里边有个叫qcncodecs4.dll的文件。
然后创建文件夹,
qDebug()<<path;
QDir dir; dir.mkpath(path);
在本机上运行一切正常,在别的电脑上运行就显示乱码,创建的文件夹也是乱码。
int main()
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("gb18030"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("gb18030"));
//读配置文件的类
ini_config_t ini;
ini.read("config.ini");
qDebug()<<QObject::tr("路径=")<<ini.path;
QDir dir;
dir.mkpath(ini.path);
}
int ini_config_t::read(QString filename)
{
QSettings ini(filename,QSettings::IniFormat);
ini.setIniCodec(QTextCodec::codecForName("gb18030"));
path=ini.value("/PATH/path","").toString();
return 0;
}
[解决办法]
1) 你读ini应该不是用的Qt自带的QSettings吧,我记得以前4.4版本测试的时候,QSettings不支持中文,不过看你本机显示正常,应该是没问题的
2) Qt推荐的目录plugins/codecs/qcncodecs.dll
QApplication a(argc, argv);
QApplication::addLibraryPath("./plugins");
QTextCodec::setCodecForTr (QTextCodec::codecForName ("GBK"));
[解决办法]
可能是另一台机器上没有使用的字体。