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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема кодировкой DOS кирилица -> windows  (Прочитано 7575 раз)
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« : Апрель 18, 2009, 19:58 »

Делаю
Код:
		QFile file(s);
if ( file.open( IO_ReadOnly ) )
{
           QTextStream stream( &file );
while ( !stream.atEnd() )
{
QString line = stream.readLine();
        QTextCodec *codec = QTextCodec::codecForName("IBM 866");
        QCString locallyEncoded = codec->fromUnicode( line );
    QMessageBox::information( this,"",locallyEncoded);
}
          file.close();
}
Получаю КРЯКОЗЯБРЫ.

Файл текстовый, создан в FAR в DOS-кодировке.

QT3.3.8 windowsXP
Записан

Как мало времени и как много нужно узнать
Rcus
Гость
« Ответ #1 : Апрель 18, 2009, 20:07 »

/*sigh*/
Цитировать
void QTextStream::setCodec ( QTextCodec * codec )
Sets the codec for this stream to codec. Will not try to autodetect Unicode.

Note that this function should be called before any data is read to/written from the stream.
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #2 : Апрель 18, 2009, 20:15 »

А если по-русски?
Записан

Как мало времени и как много нужно узнать
Rcus
Гость
« Ответ #3 : Апрель 18, 2009, 20:19 »

А если по-русски то вы написали бессмысленный код.
Кодек нужно устанавливать на текстовый поток.
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #4 : Апрель 18, 2009, 20:24 »

А у меня какой?
Записан

Как мало времени и как много нужно узнать
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Апрель 18, 2009, 20:31 »

А у меня какой?

Код
C++ (Qt)
QTextStream::setCodec ( QTextCodec * codec )
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Rcus
Гость
« Ответ #6 : Апрель 18, 2009, 20:35 »

Ну посмотрите:
CString(ibm866) -> [win1251 codec] -> QString(utf16 already corrupted) -> [ibm 866] -> QCString -> [cstring codec] -> QString

В общем этот кусок кода должен выглядеть примерно так:
Код
C++ (Qt)
QFile file(s);
if ( file.open( IO_ReadOnly ) ) {
   QTextStream stream( &file );
   stream.setCodec(QTextCodec::codeForName("IBM866"));
   while ( !stream.atEnd() ) {
       const QString line = stream.readLine();
       QMessageBox::information( this,"",locallyEncoded);
   }
   file.close();
}
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #7 : Апрель 18, 2009, 20:49 »

Спасибо за помощь!!!
Срослось Смеющийся
Записан

Как мало времени и как много нужно узнать
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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