Russian Qt Forum

Qt => Вопросы новичков => Тема начата: west от Август 13, 2015, 17:18



Название: русский шрифт
Отправлено: west от Август 13, 2015, 17:18
Получаю аргументы в ком. строки с помощью QCoreApplication::arguments (), часть из них написана кириллицей. Потом некоторые надо привести к char* и передать в другую функцию. Перепробовал все, по идеи, должно работать string.toLocal8bit().data(), но пишется всякая ерунда. Сам QString нормальный. Платформа Linux, Qt4.8.
Что можно сделать?
Спасибо


Название: Re: русский шрифт
Отправлено: west от Август 13, 2015, 18:48
В самом деле проблема глубже, нужен char*, который можно передать как параметр функции. И все кодировки работают, и в консоль пишется (для отладки) русский текст. Только вот в функцию передается кракозябра. Функцию, конечно, переписать нельзя, да и не в ней проблема. Отладчик (gdb) тоже выдает кракозябру.
Есть идеи? 


Название: Re: русский шрифт
Отправлено: Bepec от Август 13, 2015, 19:10
Как вариант ваш отладчик не может показать эту кодировку. А если уж быть более точным, строка не может измениться "просто так" между выводом и посылкой в ф-цию. Дебаггер в руки и вперед )


Название: Re: русский шрифт
Отправлено: west от Август 13, 2015, 19:20
Код:
    if(CtrConfig::isCmdLineArgumentPresent(ARG_OBJREPR_CONTEXT)
            && CtrConfig::isCmdLineArgumentPresent(ARG_OBJREPR_OBJECT_NAME))
    {
        // вот в эти два стринга я получаю значения командной строки
        QString objrepr_context = CtrConfig::getCmdLineValue(ARG_OBJREPR_CONTEXT, fl);
        QString objrepr_object_name = CtrConfig::getCmdLineValue(ARG_OBJREPR_OBJECT_NAME, fl);


        // вывод в консоль для контроля - выводится то, что надо
        std::cout << objrepr_context.toUtf8().data()
                       << objrepr_object_name.toUtf8().data() << std::endl;
        
        // передача параметров в функцию - в функции приходит всякая хрень
        initContext(objrepr_context.toUtf8().data(), objrepr_object_name.toUtf8().data());
    }
    else
        LOGF(WARNING, "Context information not found!");
Кодировка в приложении установлена UTF-8


Название: Re: русский шрифт
Отправлено: qate от Август 14, 2015, 09:07
в какой кодировке initContext ожидает char * ?
cp1251, koi8r, cp866 ?