Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/54: Рейтинг темы: голосов - 54, средняя оценка - 4.89
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485

QTextCodec/ в одной программе разные кодировки

19.09.2012, 17:26. Показов 11523. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Вот возник очередной вопрос(ы) по Qt(XP)...

Данные принимаю от сервера в IBM 866 и вот с выводом по qDebug()<<X проблемы,
как-то решил вывод на ui - в main прописал что-то наподобие
C++ (Qt)
1
2
3
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("IBM 866"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("CP-1251"));
, но тогда в родном классе с ui выводится белиберда вместо русских символов в таком сообщении.
C++ (Qt)
1
2
3
switch(QMessageBox::question(this, ("Сохранить"),
 ("Сохранить изменения?"), ("&Да"), ("&Нет"), String::null, 0, 1))
 ... // и если здесь ставлю tr перед скобками - то по закрытию окошка или выбору прога вылетает...
Вопрос: Где и когда нужно прописывать эти три строчки (в main или в конструкторах своих классов)
и точно что они означают. Как же получить вывод русских сиволов из IBM 866 и в консоль и на ui и
как же выводить и свой русский текст на ui компоненты формы и в консоль (в редакторе все на UTF-8),
и последнее как быстро для отсылки преобразовывать (какой функцией) UTF-8 в IBM 866 и обратно ...?
Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.09.2012, 17:26
Ответы с готовыми решениями:

Разные цвета шрифта текста в одной программе
Я программирую на Small Basic. Умею менять цвет шрифта текста выводимого в программе инструкцией ForegroundColor, но я не знаю что делать...

Разные ошибки в одной и той же программе с разными IDE
Добрый день. Столкнулся с проблемой. Начинал писать в Ubuntu используя QtCreator. Компилятор GCC. Все работало. Потом исходники перенес...

Разные кодировки в MySQL и PHP
блин знаю что проблема уже не новша, но столкнулся с проблемой кодировок, в базе содержится русский текст и при выводе его на страницу...

6
 Аватар для KeyGen
388 / 295 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
19.09.2012, 23:25
Вот написал в Вопрос - Ответ для новичков по Qt.
1
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
20.09.2012, 17:23  [ТС]
Спасибо конечно, по частям оно и так работало,
но вопрос состоит в том, что у меня несколько потоков
могут писать в и на консоль и в ui, но кодировки разные!
0
 Аватар для KeyGen
388 / 295 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
20.09.2012, 17:38
А что мешает изменить кодировку и вы вести в консоль, ну или куда нужно?

C++ (Qt)
1
QByteArray encodedString = codec->fromUnicode(text);
1
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
01.11.2012, 19:15  [ТС]
Здравствуйте...
Когда-то отложил, но вот пришлось вернуться...Переписал пример для новичков...
Уже просто хочу тоже вывести текст "Русский", но перебирая все кодировки ни
одна не выводит его... Я его могу просто вывести без всяких кодировок примера, но
проблема состоит в том, что нужно параллельно с "моим текстом" (редактор в UTF-8)
выводить ешё и чары IBM 866 (получаемые с древнего сервера)! Что делать???

Вот пример 1(упрощенно):
C++ (Qt)
1
2
3
4
5
6
7
...
char A[32];                          // заполнено IBM 866
QString B="Русский";             // заполнено от руки
...
ui->label1->setText(A);
ui->label2->setText(B);
...
________________________________________ ___________
"Русский" выведет отлично в label2, а в label1 будет бред ...


Вот пример 2(упрощенно):
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
...
char A[32];                          // заполнено IBM 866
QString B="Русский";             // заполнено от руки
...
                                          // где-то в конструкторе
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("IBM 866"));
                                          // если поставлю UTF-8 будет результат пример1.
...
ui->label1->setText(A);
ui->label2->setText(B);
...
________________________________________ ___________
Бред в label2, а в label1 будет все отлично ...

Как это сделать правильно и универсально (QtCreator Linux)?
Cпасибо!
0
 Аватар для KeyGen
388 / 295 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
01.11.2012, 22:15
Общую кодировку не меняй:
C++ (Qt)
1
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("IBM 866"));
Преобразуй просто одну строку (char A[32]; ) в нужную кодировку...
1
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
02.11.2012, 16:37  [ТС]
Опять вопрос тот же, только теперь нужно писать
в одну лабель == переписывать ее содержимое из
различных потоков, в которых разные кодировки:
(IBM 866 и UTF-8, потом появиться и база с CP1251)!
Может можно как-то сделать типа tr(), tr1(), tr2()?
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.11.2012, 16:37
Помогаю со студенческими работами здесь

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

Текст файла+строки= Разные кодировки
ts1,ts2:tstringlist; begin Создали списки ts1.add('строка'); ts2.loadfromFile('1.js'); ts2.AddStrings(ts1); В итоге в ts2...

Разные кодировки в редакторе VBA и Access
Всем привет! Знаю, что проблемы с кириллицей всех достали, но, к сожалению, перерыл весь интернет, но так и не нашел решения своей...

Перевод из одной кодировки в другую
Как имея текстовый документ в какой либо кодировке перевести его в другую?

Перевод из одной кодировки в другую
Возможно ли это реализовать в программном коде Visual Basic 6? Если да, то как?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru