Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt 4.4.3]вывод от другого процесса, каракули вместо русских букв 
:(
    Опции темы
anatox91
Дата 2.2.2009, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



Есть приложение, которое в свою очередь запускает некоторый другой процесс, и перенаправляет его вывод в QTextEdit. Все бы ничего, но когда в тексте присутствуют русские символы, то в QTextEdit'e вместо них показывается всякий мусор. Как решить данную проблему?
Заранее спасибо 


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Acer
Дата 3.2.2009, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: 15
Всего: 8



А пробовал так:
Код

QTextEdit::setText( trUtf8( /*rus string from some process*/ ) );

?
PM MAIL   Вверх
ecspertiza
Дата 3.2.2009, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



или так 

Код

QByteArray data;
QTextEdit *text;
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
data = "русский текст";
text->setText(codec->toUnicode(data.data()));


?


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
anatox91
Дата 3.2.2009, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



ни первый, ни второй способы не работают. Кстати, вывод идет от процесса g++


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Elfebet
Дата 3.2.2009, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 5
Всего: 14



может код покажеш или свои кракозяблики. для начала нужно определить в какой кодировке идет текст.
В любом случае нужно копать в сторону QTextCodec

ps. может такой код поможет если текст в локальной кодировке
Код

inline QString a(const char *str)
{
    return QTextCodec::codecForLocale()->toUnicode(str, qstrlen(str));
}
// пример QMessageBox::information(0, 0, a("какой нить текст!"));




--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
anatox91
Дата 3.2.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



При обычном выводе от g++, вместо кавычек, в которые он оборачивает имена переменных и функций идут каракули. Код довольно большой, но ничего необычного там нет. Один класс-обертка читает весь вывод процесса и передает его в QString через сигнал. Второй класс перехватывает этот сигнал и направляет его к виджету вывода, который просто делает textEdit->append(text);
Вот и все в общем.


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Acer
Дата 3.2.2009, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: 15
Всего: 8



а g++ в какой кодировке текст дает? под виндой или под линухом?
PM MAIL   Вверх
anatox91
Дата 3.2.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



под linux

Добавлено через 1 минуту и 19 секунд
в какой кодировке я и сам не знаю


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Acer
Дата 3.2.2009, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: 15
Всего: 8



А если попробовать конвертить из юникода?
Код

fromUtf8()

PM MAIL   Вверх
SABROG
Дата 3.2.2009, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(anatox91 @  3.2.2009,  18:58 Найти цитируемый пост)
в какой кодировке я и сам не знаю 

Перенаправь как-нибудь вывод в файл и запость сюда, мы сразу разберемся что за кодировка.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
anatox91
Дата 3.2.2009, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



Цитата(SABROG @  3.2.2009,  20:14 Найти цитируемый пост)
Перенаправь как-нибудь вывод в файл и запость сюда, мы сразу разберемся что за кодировка.

а как? если так
Код

g++ main.cpp -o main.o >> log.txt

то только создает пустой файл, хотя в консоль выводит


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Любитель
Дата 3.2.2009, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Код

g++ -o main.o main.cpp &> log



--------------------
PM MAIL ICQ Skype   Вверх
anatox91
Дата 3.2.2009, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



спасибо, вот файл

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  log 0,12 Kb


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
SABROG
Дата 3.2.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Видишь ты наверно это:

Цитата

main.cpp: In function ‘int main(int, char**)’:
main.cpp:9: error: ‘EXIT_SUCCESS’ was not declared in this scope


В то время как там это:
Цитата

main.cpp: In function ‘int main(int, char**)’:
main.cpp:9: error: ‘EXIT_SUCCESS’ was not declared in this scope


Utf-8 как ни странно...

Это сообщение отредактировал(а) SABROG - 3.2.2009, 22:23


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
anatox91
Дата 3.2.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



SABROG, да, именно так оно и отображается

Добавлено через 3 минуты и 2 секунды
кстати путем некоторых экспериментов(по-моему еще одна конвертация в юникод) иногда получалось нормально отображать кавычки после имен, однако кавычки перед именами все равно оставались каракулями 


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.