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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: rasdial проблема с кодировкой...  (Прочитано 2818 раз)
zoro86
Гость
« : Апрель 29, 2010, 07:19 »

Подымаю соединение следующим образом...

Код:
void ConAcceptor::connect_net()
{
    int Debuger = 1;

    QByteArray encodedString;
    QStringList arg;
    arg << connection_name ; //параметры для команды rasdial
    proc->start("rasdial", arg);
    proc->waitForFinished();
    encodedString = proc->readAll();
   
    QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
    QString message = codec->toUnicode(encodedString);
 
   emit emit_logger(0,QString("( CONNECTION ) \n%1.").arg(message));
   proc->close();

emit_logger сигнал для записи данных в файл следующим образом:

Код:
switch(cod)
    {
        case 0:
            str_coment = " INFO: ";
        break;
        case 1:
            str_coment = " WARNING: ";
        break;
        case 2:
            str_coment = " ERROR: ";
        break;
    }
    QDate date_now;
    QString str_date = date_now.currentDate().toString("yyyy-MM-dd");

    QDateTime date_time_now;
    QString str_date_time = date_time_now.currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
    QString fileName = "log/" + str_date + ".txt";
    //Создаем указательна на файл
    QFile fileLog(fileName);
    if(fileLog.exists()){
        if (!fileLog.open(QIODevice::Append | QIODevice::Text)){
            if(Debuger) qDebug() << "error open file log QIODevice::Append";
            return;
        }
    }else{
        if (!fileLog.open(QIODevice::WriteOnly | QIODevice::Text)){
            if(Debuger) qDebug() << "error open file log QIODevice::WriteOnly";
            return;
        }
    }

        QTextStream out(&fileLog);
        out << str_date_time << str_coment << text << "\n";
   fileLog.close();

кодировка исходников UTF-8, платформа Win-s,

при записи данных от rasdial-a которые конвертировал в UTF-8 в файл получается нечто :
Код:
“бв ­®ўЄ  бўп§Ё б BEELINE...
Џа®ўҐаЄ  Ё¬Ґ­Ё Ё Ї а®«п Ї®«м§®ў вҐ«п...
ђҐЈЁбва жЁп Є®¬ЇмовҐа  ў бҐвЁ...
“бв ­®ў«Ґ­  бўп§м б BEELINE.
Љ®¬ ­¤  гбЇҐи­® § ўҐа襭 .

а если на прямую записываю то вместо кирилицы Непонимающий?

хотя в консоли при qDebug() <<message  который является результатом перекодировки в UTF-8 данных от rasdial выводится вида:
Код:
Установка связи с BEELINE...
Проверка имени и пароля пользователя...
Регистрация компьютера в сети...
Установлена связь с BEELINE.
Команда успешно завершина.

как разобраться с этим...
Записан
p166
Гость
« Ответ #1 : Апрель 29, 2010, 15:21 »

попробуй чтение через
Код:
qint64 QIODevice::readLine ( char * data, qint64 maxSize )
Записан
zoro86
Гость
« Ответ #2 : Апрель 30, 2010, 08:33 »

Остальная инфа из лог файла считывается нормально ...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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