我有從QString的穿越 - 到QByteArray中的一個問題,然後返回到QString的:Qt的QString時,QByteArray中和背部
int main() {
QString s;
for(int i = 0; i < 65536; i++) {
s.append(QChar(i));
}
QByteArray ba = s.toUtf8();
QString s1 = QString::fromUtf8(ba);
if(areSame(s, s1)) {
qDebug() << "OK";
} else {
qDebug() << "FAIL";
outputErrors(s, s1);
}
return 0;
}
正如你可以看到我填補在16位範圍內的所有字符,即QString。然後將它們轉換爲QByteArray(Utf8)並返回到QString。問題是值爲0的字符和值大於55295的字符無法轉換回QString。
如果我留在範圍1到< 55297這個測試通過。
的0字符終止字符串,所以很明顯,它不會工作 – user4759923
忘了「\ 0」,但我仍然不明白,與其他值的問題。 – JanSLO
也許這些unicode字符沒有實現 – user4759923