Qt и escape-строка Юникода - PullRequest
5 голосов
/ 02 июня 2010

Я получаю данные с сервера, используя сигнал и слот. Вот часть слота:

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

Проблема в том, что в текстовой переменной будет экранирование Юникода, например:

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

Есть ли способ конвертировать это?

Ответы [ 3 ]

7 голосов
/ 13 августа 2011

Я думаю, это то, что вам нужно:

(Найдите вхождения \ uCCCC с помощью регулярных выражений и замените их на QChar с номером Unicode CCCC в базе 16)

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)));
}
2 голосов
/ 02 июня 2010

Вы пробовали:

QString text = QString::fromUtf8(this->reply->readAll());

http://doc.qt.io/qt-5/qstring.html#fromUtf8

Предполагая, что это Utf8, в противном случае используйте fromUtf16

0 голосов
/ 03 июня 2010

Как насчет этого ??

QString text = reply->readAll().replace("\","\\");

Используя приведенный выше фрагмент, вы можете заменить одиночную косую черту на двойную, чтобы можно было получить одиночную косую черту. Надеюсь, что это работает.

...