A inserção QJsonObject corrompe a string utf8
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?
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