QByteArray 转成 QString 中文乱码的解决方案

QString filepathbyteArrayToUnicode(const QByteArray &array, int &CodeSet)
{
    CodeSet = 0;
    // state用于保存转换状态,它的成员invalidChars,可用来判断是否转换成功
    // 如果转换成功,则值为0,如果值大于0,则说明转换失败
    QTextCodec::ConverterState state;
    // 先尝试使用utf-8的方式把QByteArray转换成QString
    QString text = QTextCodec::codecForName("UTF-8")->toUnicode(array.constData(), array.size(), &state);
    // 如果转换时无效字符数量大于0,说明编码格式不对
    if (state.invalidChars > 0)
    {
        CodeSet = 1;
        // 再尝试使用GBK的方式进行转换,一般就能转换正确(当然也可能是其它格式,但比较少见了)
        text = QTextCodec::codecForName("GBK")->toUnicode(array);
    }
    return text;
}

你可能感兴趣的:(qt,c++,开发语言,后端)