【发布时间】:2016-11-27 06:06:02
【问题描述】:
我在从 QString 转换为 QByteArray 然后再转换回 QString 时遇到问题:
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 到
【问题讨论】:
-
0字符结束一个字符串,所以很明显是不行的
-
忘记了 '\0' 但我仍然不明白其他值的问题。
-
可能这些unicode字符没有实现
标签: c++ qt qstring qbytearray