2014-04-11 4 views
2

У меня есть этот код, где tag.m_description является QString, содержащий символы кириллицы: «Шщлщ»QJsonObject вставки разлагает строку UTF8

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

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

Это первый и второй выход из заявлений отладки:

Шщлщ
⠄ 䤄 㬄 䤄

Первый выход хороший. Второе - нет.

Любая идея, почему QJsonObject :: insert искажает мои данные?

+0

Does (* it) .isString() возвращает true или false? – TheDarkKnight

+0

Я просто попробовал (* it) .isString(). Это вернулось. – rosewater

+0

Btw, вызов setlocale (LC_ALL, "") показывает текущий язык: C – rosewater

ответ

0

Я узнал, глядя на исходный код QJsonObject, что строка хранится как строка unicode вместо utf-8. Он хранится внутри массива utf-16 (два байта на символ).

Смежные вопросы