Обнаружение и печать символов Юникода с помощью Qt - PullRequest
0 голосов
/ 20 января 2012

Я пытаюсь прочитать и распечатать файл, который может содержать или не содержать коды UTF-8.

Файл моего примера содержит:

привет
\ U22a2
эй

Мой код:

    QFile file("/path/qteststream.txt");

    if(!file.open(QIODevice::ReadOnly | QIODevice::Text ))
        std::cout << "Fail" << std::endl;

    QTextStream stream(&file);
    QTextStream qout(stdout);
    stream.setAutoDetectUnicode(true);

    while(!stream.atEnd())
      qout << stream.readLine() << endl;

Но, очевидно, я делаю что-то не так. Я ожидал, что \ u22a2 будет напечатан как символ Юникода, но программа просто печатает строку. Как можно распечатать такие последовательности как символы?

Ответы [ 2 ]

4 голосов
/ 20 января 2012

\u22a2 может интерпретироваться как символ Unicode вашим компилятором C ++, но за пределами исходного кода все по-другому.В текстовом файле \u22a2 - это всего 6 символов (\, u, 2, 2, a и 2) подряд.Попробуйте вставить непосредственно в текстовый файл.

Если у вас намеренно есть \u22a2 в текстовом файле и вы хотите преобразовать его в символ Unicode, вы можете проверить этот пост .

1 голос
/ 20 января 2012

Экранирующие коды \u используются только в файлах C / C ++, но не во входных файлах. «Автоопределение Unicode» означает, что файл может иметь формат UTF-8 (ASCII в качестве подмножества также подходит) или UCS-2 с BOM , и он будет прозрачен для вашего приложения.

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