当前位置: 代码迷 >> QT开发 >> 本机下运行正常,换到其他机器下就出中文乱码
  详细解决方案

本机下运行正常,换到其他机器下就出中文乱码

热度:45   发布时间:2016-04-25 04:21:15.0
本机上运行正常,换到其他机器上就出中文乱码
编写了一个读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"));
------其他解决方案--------------------
可能是另一台机器上没有使用的字体。
------其他解决方案--------------------
我把编码换成 "system" 就可用了,但是不知道在Linux上是不是可行。
  相关解决方案