crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Чтение .txt файла, сохраненного в кодировке UTF-8, При чтении, на вывод идут символы '?', вместо содержимого
aqt
  опции профиля:
сообщение 28.10.2015, 13:25
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 1.5.2015
Пользователь №: 4375

Спасибо сказали: 2 раз(а)




Репутация:   0  


Привет всем!
Есть .txt файл, в котором записаны 4 символа: ӮӰӴӸԊ. Файл сохранен в кодировке UTF-8. При чтении из этого файла, получается какая-то абракадабра

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTranslator translator;
    translator.load("ru", QApplication::applicationDirPath() + "/");
    a.installTranslator(&translator);

    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForTr(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForLocale(codec);

    QTextStream stream;
    stream.setCodec("UTF-8");

    QFile file ("C:/4.txt");

    if(file.open(QIODevice::ReadOnly))
    {
        stream.setDevice (&file);

        while (!stream.atEnd())
        {
            qDebug() << stream.readLine(); // выводит "?????"

            break;
        }
    }
    else qDebug() << "No open!";

    return a.exec();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.10.2015, 20:15
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


а куда выводишь? в винде в командную строку?
Тогда конвертируй QString к "IBM-866"

QTextCodec *outCodec = QTextCodec::codecForName("IBM-866"); // Добавь
...
qDebug() << outCodec->fromUnicode(stream.readLine()); // Измени


Сообщение отредактировал Litkevich Yuriy - 28.10.2015, 20:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 16.11.2019, 4:19