как конвертировать юникод в печатаемую строку в потоке QT - PullRequest
0 голосов
/ 02 мая 2010

Я записываю поток в файл и стандартный вывод, но получаю какую-то кодировку, подобную этой:

\ u05ea \ u05e7 \ u05dc \ u05d9 \ u05d8 \ U05e9 \ u05e1 \ u05d9 \ u05de \ u05dc \ U05e9 \ u05d9 \ u05e0 \ u05d5 \ u05d9 \ U05d1 \ u05e1 \ u05d2 \ u05e0 \ u05d5 \ u05df \ U05dc \ u05d3 \ u05e2 \ u05ea \ u05d9 \ u05d0 \ u05dd \ u05d0 \ u05e0 \ u05d9 \ U05d6 \ u05d5 \ u05db \ u05e8 \ U05e0 \ u05db \ u05d5 \ u05df

Как я могу преобразовать это в строку для печати?

1 Ответ

3 голосов
/ 02 мая 2010

Я не могу понять, как вы печатаете строку, но это просто Unicode:

#include <QString>
#include <QFile>
#include <QDebug>

int main(int argc, char **argv)
{

  QString s = "\u05ea\u05e7\u05dc\u05d9\u05d8 \u05e9\u05e1\u05d9\u05de\u05dc \u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05e1\u05d2\u05e0\u05d5\u05df \u05dc\u05d3\u05e2\u05ea\u05d9 \u05d0\u05dd \u05d0\u05e0\u05d9 \u05d6\u05d5\u05db\u05e8 \u05e0\u05db\u05d5\u05df";

  QFile file1("1.txt");
  if (!file1.open(QIODevice::WriteOnly | QIODevice::Text))
    return 1;

  QTextStream out(&file1);
  out << s << "\n";

  qDebug() << s;
  return 0;
}

Если я скомпилирую и запусту его

g++ -lQtCore -I /usr/include/QtCore test.cpp 
./a.out 

Я вижу печатаемые символы как в выводе отладочной информации консоли, так и в файле:

"תקליט שסימל שינוי בסגנון לדעתי אם אני זוכר נכון" 

Так что вы, вероятно, делаете что-то не так или смотрите не в ту сторону, можете ли вы вставить свой код, чтобы мы могли помочь вам лучше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...