Pergunta

Tenho este código onde tag.m_description é uma QString contendo caracteres cirílicos:"Шщлщ"

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

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

Esta é a primeira e a segunda saída das instruções de depuração:

Шщлщ
⠄䤄㬄䤄

A primeira saída é boa.O segundo não é.

Alguma ideia de por que QJsonObject::insert está corrompendo meus dados?

Foi útil?

Solução

Eu descobri, olhando para o código-fonte QJsonObject, que a string é armazenada como uma cadeia Unicode em vez de UTF-8.Ele é armazenado internamente em uma matriz UTF-16 (dois bytes por caractere).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top