2

我有这个代码,其中 tag.m_description 是一个包含西里尔字符的 QString:“Шщлщ”

QJsonObject json;
QJsonObject::iterator it = 
      json.insert("value", QJsonValue( tag.m_description );

qDebug(QJsonValue( tag.m_description ).toString());
qDebug((*it).toString());

这是调试语句的第一个和第二个输出:

Шщлщ
⠄䤄㬄䤄

第一个输出很好。第二个不是。

知道为什么 QJsonObject::insert 会破坏我的数据吗?

4

1 回答 1

0

我发现,查看QJsonObject源代码,该字符串存储为 unicode 字符串而不是 utf-8。它在内部存储在 utf-16(每个字符两个字节)数组中。

于 2014-04-14T19:12:32.580 回答