crossplatform.ru

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

> QTextStream, QString и кодировка, UTF-8 -> windows-1251
ubuntu
  опции профиля:
сообщение 25.10.2007, 17:34
Сообщение #1


Студент
*

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

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




Репутация:   0  


Читаю файл из QTextStream в QString в кодировке UTF-8, записываю его в windows-1251, соответственно меняя кодек для QString в UTF-8 и windows-1251, соответственно, но почему-то записываются какие-то кракозябры! :(

Делаю все так:
    QFile fileRead( rszFile);
    if( !fileRead.open( QIODevice::ReadOnly))
    {
        qCritical( "Can'not open file: %s for read", qPrintable( rszFile));
        return false;
    }
    QTextCodec *pCodec = QTextCodec::codecForName( "UTF-8");
    QTextCodec::setCodecForCStrings( pCodec);

    QString szData;
    QTextStream out( &fileRead);
    QString szLine;
    do
    {
        szLine = out.readLine();
        szData += szLine + "\r\n";
    }while( !szLine.isNull());

    fileRead.close();
    szData = szData.toLower();

    // Здесь идет некая обработка данных...

    pCodec = QTextCodec::codecForName( "windows-1251");
    QTextCodec::setCodecForCStrings( pCodec);

    QFile fileWrite( rszNewFile);
    if( !fileWrite.open( QIODevice::WriteOnly))
    {
        qCritical( "Can'not open file: %s for read", qPrintable( rszFile));
        return false;
    }

    QTextStream in( &fileWrite);
    in << szData;
    fileWrite.close();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов (1 - 1)
ViGOur
  опции профиля:
сообщение 25.10.2007, 17:39
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Нужно устанавливать кодек не только для QString'a, но и для QTextStream'ов, добавь:
out.setCodec( pCodec);
// и
in.setCodec( pCodec);
Перед чтением и записью из потока и в поток. Все должно заработать...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 27.11.2024, 16:55