2014-04-11 56 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

是否(* it).isString()返回true或false? – TheDarkKnight

+0

我剛試過(* it).isString()。它恢復了真實。 – rosewater

+0

順便說一句,一個調用setlocale(LC_ALL,「」)顯示當前語言環境是C – rosewater

回答

0

我發現,看着QJsonObject源代碼,該字符串存儲爲unicode字符串而不是utf-8。它內部存儲在utf-16(每個字符兩個字節)數組中。