Qt QString到QByteArray并返回

简·斯洛

我在从QString转换到QByteArray然后再回到QString时遇到问题:

int main() {

    QString s;

    for(int i = 0; i < 65536; i++) {
        s.append(QChar(i));
    }

    QByteArray ba = s.toUtf8();

    QString s1 = QString::fromUtf8(ba);

    if(areSame(s, s1)) {
        qDebug() << "OK";
    } else {
       qDebug() << "FAIL";
       outputErrors(s, s1);
    }

    return 0;
}

如您所见,我用16位范围内的所有字符填充QString。然后将它们转换为QByteArray(Utf8)并返回QString。问题是值0的字符和值大于55295的字符无法转换回QString。

如果我保持在1到<55297的范围内,则此测试通过。

罗纳德·克洛普(Ronald Klop)

从55296(0xD800)到57343(0xdfff)的字符代理字符您可以将其视为其后字符的转义字符。它们本身没有任何意义。

您可以通过运行以下命令进行检查:

// QChar(0) was omitted so s and s1 start with QChar(1)
for (int i = 1 ; i < 65536 ; i++)
{
    qDebug() << i << QChar(i) << s[i-1]  << s1[i-1] << (s[i-1] == s1[i-1]);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Qt QString到QByteArray并返回

来自分类Dev

Qt C ++ QString到QByteArray的转换

来自分类Dev

将QString / QByteArray转换为科学记数法qt

来自分类Dev

从QJsonValue到QByteArray的Qt C ++转换

来自分类Dev

QByteArray转换的Qt优化

来自分类Dev

QByteArray转换的Qt优化

来自分类Dev

QT:浮动到QString

来自分类Dev

Qt QVarLengthArray的QString内部

来自分类Dev

QString等效于.at()C ++ QT

来自分类Dev

Qt 5.6中的QString拆分

来自分类Dev

Qt 中的可观察 QString

来自分类Dev

QByteArray 填充 \x....\x.... 到 QString

来自分类Dev

在Qt中将int转换为QBytearray

来自分类Dev

如何优化此Qt代码(QByteArray转换)?

来自分类Dev

在Qt中将int转换为QByteArray

来自分类Dev

从Glib移植到Qt

来自分类Dev

Qt-将float转换为QString

来自分类Dev

Qt:在QString中格式化整数

来自分类Dev

Qt 5.15.2,C ++ QString indexOf()函数问题

来自分类Dev

QString,Qt中的重载+运算符

来自分类Dev

Qt:在QString中格式化整数

来自分类Dev

Qt QString Q_PROPERTY导致SIGSEGV

来自分类Dev

如何增加QString(Qt)中的字符

来自分类Dev

Qt5.5 QString indexOf奇数结果

来自分类Dev

QT:将QString传递给QThread

来自分类Dev

Qt QString lastIndexOf不起作用

来自分类Dev

QMap <QString,QVector <QString >>访问QVector C ++ Qt

来自分类Dev

在Qt中,如何将QString注册到系统剪贴板(带引号和非引号)?

来自分类Dev

json中的QT SqlQuery返回