Russian Qt Forum
Ноябрь 23, 2024, 05:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Кодировка кириллице в win и dos  (Прочитано 7117 раз)
NoT
Гость
« : Ноябрь 18, 2010, 17:58 »

Доброго времени.
есть файл, в котором есть русский текст. кодировка предположительно dos-ая. По крайней мере в фаре читабельный вид файл имеет именно в dos кодировке.
Текст из файла помещаю в QTextEdit. Предварительно меняю кодировку в потоке который все это дело пишет.
Код:
QBuffer buffer;
    buffer.open(QIODevice::ReadWrite);
    QTextStream out(&buffer);
    out << ui->LasResult->toPlainText();
    buffer.seek(0);
    ui->LasResult->clear();
    QTextStream in(&buffer);
    in.setCodec(QTextCodec::codecForName("IBM866"));
    while (!in.atEnd())
    {
        QString line = in.readLine();
        ui->LasResult->append(line);
    }
Но вот проблемка. в итоге все равно получаются крокозябры.
Или быть может нужно менять кодировку потока который считывает?
Да и собственно какие кодировки то нужно использовать? Быть может все дело в том что я не правильные кодировки использую.
« Последнее редактирование: Ноябрь 18, 2010, 18:06 от NoT » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Ноябрь 18, 2010, 18:11 »

Что-то ты ерунду пишешь.
Код
C++ (Qt)
QFile file ("file.txt");
file.open (QIODevice::ReadOnly);
QTextStream stream (&file);
stream.setCodec ("CP866");
ui->LasResult->setPlainText (stream.readAll ());
 
Данный код упрощен.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
NoT
Гость
« Ответ #2 : Ноябрь 18, 2010, 20:01 »

Может выразился не правильно. Текст из файла прочитал и записал в едит. Вижу что кодировка не та. Копирую текст из эдита в буфер там меняю коировку и пишу обратно.
Подозреваю что в этом то и не прав.
Если при чтении из файла указать  досовскую кодировку сразу, то крокозябров нет. но я ведь не телепат что значит заранее что файл в досовской кодировке, а не в виндовской.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Ноябрь 18, 2010, 20:15 »

Хм. Интересно. Тогда при сохранении в буфер указывай кодировку, в которой читал.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
NoT
Гость
« Ответ #4 : Ноябрь 18, 2010, 20:28 »

Точно. Заработало. Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.109 секунд. Запросов: 22.