QString转换QByteArray(char*)时中文问题解决方案

本文介绍了在QT中将QString转换为QByteArray时遇到的中文乱码问题及其解决方法。通过对比使用toLocal8Bit()和toLatin1()函数的不足,提出了使用byteArray.toStdString().data()进行转换的有效方案,成功解决了中文字符转换后的显示问题。
摘要由CSDN通过智能技术生成

QString To Char* :

char* TT::StringToChar(QString str)
{
    char *chStr = NULL;
    QByteArray ba = str.toLocal8Bit();
    chStr = (char *)malloc(ba.length() + 1);
    memset(chStr,0,ba.length());
    memcpy(chStr,ba.data(),ba.length());
    chStr[ba.length()] = '\0';
    return chStr;
}

转:

1、用toLocal8Bit()

QJsonDocument::fromJson(stringData.toLocal8Bit(), &jsonError);  // 转化为 JSON 文档
if (doucment.isNull()  ||  (jsonError.error != QJsonParseError::NoError)) {
        qDebug() << "Error : " << "doucment:" << doucment.isNull() << "jsonError:" << jsonError.error

};

直接Error报错,jsonError错误9。


2、用toLatin1()类虽然可以转换,但是遇到中文,显示?????。

QJsonDocument::fromJson(stringData.toLocal8Bit(), &jsonError);  

3、于是用了这个方法,问题解决:
QJsonDocument::fromJson(byteArray.toStdString().data(), &jsonError);  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值