我是通过信号和插槽获取服务器数据的。这是插槽部分:
QString text(this->reply->readAll());
问题是,在text变量中将是unicode转义,例如:
\u043d\u0435 \u043f\u0430\u0440\u044c\u0441\u044f ;-)
有没有办法转换它?
答案 0 :(得分:7)
我认为这就是你所需要的:
(使用正则表达式查找出现的\ uCCCC,并用基数为16的unicode号CCCC的QChar替换它们)
QRegExp rx("(\\\\u[0-9a-fA-F]{4})");
int pos = 0;
while ((pos = rx.indexIn(str, pos)) != -1) {
str.replace(pos++, 6, QChar(rx.cap(1).right(4).toUShort(0, 16)));
}
答案 1 :(得分:2)
你有没有尝试过:
QString text = QString::fromUtf8(this->reply->readAll());
http://doc.qt.io/qt-5/qstring.html#fromUtf8
假设它是Utf8,否则使用fromUtf16
答案 2 :(得分:-1)
这个怎么样?
QString text = reply->readAll().replace("\","\\");
通过使用上面的代码片段,您可以将单斜杠替换为双斜杠,以便可以获得单斜杠。希望它有效。