Qt和unicode转义字符串

时间:2010-06-02 18:38:22

标签: qt unicode utf-8 escaping

我是通过信号和插槽获取服务器数据的。这是插槽部分:

QString text(this->reply->readAll());

问题是,在text变量中将是unicode转义,例如:

\u043d\u0435 \u043f\u0430\u0440\u044c\u0441\u044f ;-)

有没有办法转换它?

3 个答案:

答案 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("\","\\");

通过使用上面的代码片段,您可以将单斜杠替换为双斜杠,以便可以获得单斜杠。希望它有效。