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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: русский шрифт  (Прочитано 2692 раз)
west
Гость
« : Август 13, 2015, 17:18 »

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

В самом деле проблема глубже, нужен char*, который можно передать как параметр функции. И все кодировки работают, и в консоль пишется (для отладки) русский текст. Только вот в функцию передается кракозябра. Функцию, конечно, переписать нельзя, да и не в ней проблема. Отладчик (gdb) тоже выдает кракозябру.
Есть идеи? 
Записан
Bepec
Гость
« Ответ #2 : Август 13, 2015, 19:10 »

Как вариант ваш отладчик не может показать эту кодировку. А если уж быть более точным, строка не может измениться "просто так" между выводом и посылкой в ф-цию. Дебаггер в руки и вперед )
Записан
west
Гость
« Ответ #3 : Август 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
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #4 : Август 14, 2015, 09:07 »

в какой кодировке initContext ожидает char * ?
cp1251, koi8r, cp866 ?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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