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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с кодировкой  (Прочитано 3608 раз)
XpycT
Гость
« : Ноябрь 17, 2009, 12:38 »

Есть файл в кодировке UTF-16LE, который надо обработать и сохранить в такой-же кодировке. Посмотрел форум - ничего не помогло Грустный
Мой код (консольное приложение)
Код
C++ (Qt)
#include <stdio.h>
#include <QtCore>
#include <QTextCodec>
 
int main(int argc, char *argv[])
{    
   if (argc==2)
       {
               QString rszFile=argv[1];
               ////////
               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-16LE");
               QTextCodec::setCodecForCStrings( pCodec);
 
               QString szData;
               QTextStream out( &fileRead);
               out.setCodec( pCodec);
               QString szLine;
               do
               {
                   szLine = out.readLine();
                   szData += szLine + "\r\n";
               }while( !szLine.isNull());
 
               fileRead.close();
 
               // Здесь идет некая обработка данных...
 
               pCodec = QTextCodec::codecForName("UTF-16LE");
               QTextCodec::setCodecForCStrings(pCodec);
 
               QFile fileWrite( rszFile+".tr");
               if( !fileWrite.open( QIODevice::WriteOnly))
               {
                   qCritical( "Can'not open file: %s for write", qPrintable( rszFile));
                   return false;
               }
 
               QTextStream in( &fileWrite);
               in.setCodec( pCodec);
               in << szData;
               fileWrite.close();
               ////////
 
       }else
       {
               printf("Usage : tlrusencode file.dat\n");
       }
 
   return 1;
}
 

тестовый файл прикреплен. Помогите решить проблему Грустный
Записан
ритт
Гость
« Ответ #1 : Ноябрь 17, 2009, 21:45 »

отсутствует QCoreApplication
Записан
XpycT
Гость
« Ответ #2 : Ноябрь 17, 2009, 22:08 »

да то пофиг что нет QCoreApplication, и так все работает Улыбающийся

Решение уже подсказали. Тему можно закрывать.
Записан
shadone
Гость
« Ответ #3 : Ноябрь 18, 2009, 14:12 »

правильная работа QTextCodec без наличия QCoreApplication/QApplication не гарантируется.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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