ToB企服应用市场:ToB评测及商务社交产业平台

标题: Qt中文乱码的一种解决方法(ISO-8859-1和GBK编码互转) [打印本页]

作者: 缠丝猫    时间: 2025-1-7 16:06
标题: Qt中文乱码的一种解决方法(ISO-8859-1和GBK编码互转)
问题形貌:在老项目数据库中,中文显示乱码,编码格式未知,一度猜疑举行了加密。


问题定位:最终,经过大佬的尝试,发现是编码格式的问题。老项目中是将GBK编码的中文字符按照ISO-8859-1编码存入,导致乱码。


解决方法(Qt):
[code]void test(){    // 读取数据库    QSqlDatabase db;    QSqlQuery query(db);    QString str = QString("select * from db;");    query.exec(str);    while (query.next()) {        // 读取乱码        QSqlRecord record = query.record();        QByteArray data = record.value("data").toByteArray();        // 确定两种编码格式        QTextCodec *codec_iso = QTextCodec::codecForName("ISO-8859-1");        QTextCodec *codec_gbk = QTextCodec::codecForName("GBK");        // 将Qt读取的QByteArray转换成ISO-8859-1编码        QByteArray b1 = codec_iso->fromUnicode(b);        // 再用GBK编码转换成unicode        QString s = codec_gbk->toUnicode(b1);        // 打印输出是否正确        qDebug()




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4