Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: poops от Декабрь 09, 2009, 13:02



Название: Кодировка консоли сборки
Отправлено: poops от Декабрь 09, 2009, 13:02
Проблема в следующем, юзаю qtcreator 1.3 c QT 4.6 собранный под vs2008. Все ошибки компиляции выводятся в консоль сборки в ДОС'овской кодировке. Можно ли это как-то исправить, а то задолбался уже переключаться в консоль, чтоб ошибки посмотреть


Название: Re: Кодировка консоли сборки
Отправлено: lit-uriy от Декабрь 09, 2009, 13:06
ошибки сборки генерит компилятор, странно что студия так себя ведёт.


Название: Re: Кодировка консоли сборки
Отправлено: poops от Декабрь 09, 2009, 13:10
Понятно что компилятор, и тут по идее 2 варианта, либо в QtCreator'e поставить кодировку консоли в cp866, либо мс'овский nmake (или jom) настроить чтоб сообщения компиляции выводились в CP1251


Название: Re: Кодировка консоли сборки
Отправлено: poops от Декабрь 09, 2009, 18:06
up


Название: Re: Кодировка консоли сборки
Отправлено: b-s-a от Декабрь 10, 2009, 11:54
http://bugreports.qt.nokia.com/browse/QTCREATORBUG-316


Название: Re: Кодировка консоли сборки
Отправлено: poops от Декабрь 10, 2009, 15:56
Спасибо, помогло


Название: Re: Кодировка консоли сборки
Отправлено: Jo от Май 17, 2010, 17:33
Можешь написать как решил проблему?


Название: Re: Кодировка консоли сборки
Отправлено: kuzulis от Июль 27, 2011, 17:47
Подниму тему.

Так какое же решение?

1. Пробовал в региональных настройках Win7 для приложений не поддерживающих юникод
менять язык на английский - так креатор в консоли сборки стал выводить вопросики.  >:(

2. Пробовал удалять %VSINSTALLDIR%\VC\bin\1049\clui.dll
так студийный компилер выдает:
Цитировать
fatal error C1510: Cannot load language resource clui.dll.

ЗЫ: Использую Windows 7 + MSVC 2010 + QtCreator 2.2.1


Название: Re: Кодировка консоли сборки
Отправлено: b-s-a от Июль 27, 2011, 17:58
Решение есть тут: http://bugreports.qt.nokia.com/browse/QTCREATORBUG-316
Скачай jom.exe.zip, распакуй и замени jom.exe, что лежит в каталоге bin критора


Название: Re: Кодировка консоли сборки
Отправлено: kuzulis от Июль 27, 2011, 18:18
Cкачал - но архив битый: "неизвестный формат или ошибка в архиве".

---

 Если же удалить расширение *.zip и оставить только *.exe, и заменить jom - то компилирует, но всё-равно крякозяблы (а если менять настройки Win7 на English - то сплошные знаки вопроса).

Так что не помогает.


Название: Re: Кодировка консоли сборки
Отправлено: b-s-a от Июль 28, 2011, 10:56
Так, в Windows XP все работает.
Посмотри значение ключей OEMCP и ACP ветки реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
Должно быть "866" и "1251" соответственно.


Название: Re: Кодировка консоли сборки
Отправлено: kuzulis от Июль 28, 2011, 17:20
Да, у этих ключей было:
OEMCP  = 437
ACP = 1252

После исправления на:
OEMCP  = 866
ACP = 1251

всё заработало. Спасибо!

PS: только настораживает разница в размерах jom ~1.5MB (родной) vs ~60KB (исправленный).


Название: Re: Кодировка консоли сборки
Отправлено: b-s-a от Июль 28, 2011, 22:24
upx рулит.


Название: Re: Кодировка консоли сборки
Отправлено: andrew.k от Ноябрь 02, 2011, 15:01
Проверил ключи. У меня значения какие и должны быть.
OEMCP  = 866
ACP = 1251

Скачал jom из вложения (размер 150кб)

Проблема не устранилась. По-прежнему каракули.


Название: Re: Кодировка консоли сборки
Отправлено: b-s-a от Ноябрь 02, 2011, 16:24
Пинайте нокию через багтрекер... Сейчас в jom внесены серьезные изменения, которые полностью несовместимы с моим патчем. Поэтому, для исправления проблемы необходим целый ряд действий:
1. внесение изменений в Qt Creator, чтобы он поддерживал смену кодировки в output panes (панелях вывода) или в "читателе стандартных выводов приложений".
2. создание специального враппера, который будет декодировать вывод приложений, запускаемых через него (на данный момент в первую очередь необходимо преобразование ACP -> OEMCP, но наверняка потребуют чтобы это было параметром).
3. внесение изменений в jom/qmake/spec, чтобы запуск микрософтовского ilink.exe (или как его там) в Makefile шел через созданный враппер.

Есть желающие все это (или хотя бы часть) сделать?


Название: Re: Кодировка консоли сборки
Отправлено: Alm3n от Февраль 03, 2012, 12:16
Проблема актуальна не только для nmake, но и недавно(?) появилась у mingw-make. Собственно, с последним обновлением компилятора началось то же самое. Пока ищу решение.
UPD: удалил MinGw и переустановил QtSDK. Не знаю, что именно, но что-то из этого помогло и кодировка вернулась.


Название: Re: Кодировка консоли сборки
Отправлено: b-s-a от Февраль 03, 2012, 12:30
nmake/mingw-make/jom тут непричем. Qt изначально не поддерживает кодировку виндовой консоли (OEM).


Название: Re: Кодировка консоли сборки
Отправлено: Alm3n от Февраль 03, 2012, 12:42
nmake/mingw-make/jom тут непричем. Qt изначально не поддерживает кодировку виндовой консоли (OEM).
После обновления MinGW частично вывод сборки был на русском. Как это объяснить?


Название: Re: Кодировка консоли сборки
Отправлено: Reklats от Июнь 30, 2012, 02:25
Решена проблема! Работает в том числе и на QtCreator 2.5.0
Скачивайте тут (http://lab113.ru/qtcreator_kodirovka.php) утилитку и всё! Даже растрогался от радости :D


Название: Re: Кодировка консоли сборки
Отправлено: Alm3n от Июль 02, 2012, 19:06
Решена проблема! Работает в том числе и на QtCreator 2.5.0
Скачивайте тут (http://lab113.ru/qtcreator_kodirovka.php) утилитку и всё! Даже растрогался от радости :D
Из криокамеры выпустили?
Под MinGW проблема всё ещё актуальна. Жду озарения разработчиков в 5й версии.


Название: Re: Кодировка консоли сборки
Отправлено: Reklats от Июль 02, 2012, 21:37
Alm3n
Нехрен хамить, умник. Проблема с mingw только у вас. Вывод консоли gcc отродясь был на английском. Если у вас не так - скриншоты в студию. Я вот тоже могу заявить, что mingw мне на латыни в консоль выводит  :).

Если же при сборке студией, у вас не было проблем с кодировкой - поделились бы решением ибо всё, что выше не работает на 10й студии + креатор 2.5.0 + win7. Я нашёл рабочее решение и поделился им.


Название: Re: Кодировка консоли сборки
Отправлено: DmitryM от Июль 03, 2012, 00:12
Хвала святым яйцам, я использую Eclipse+MinGW  ;D


Название: Re: Кодировка консоли сборки
Отправлено: windnnw от Январь 29, 2013, 11:00

2. Пробовал удалять %VSINSTALLDIR%\VC\bin\1049\clui.dll
так студийный компилер выдает:
Цитировать
fatal error C1510: Cannot load language resource clui.dll.

ЗЫ: Использую Windows 7 + MSVC 2010 + QtCreator 2.2.1

В общем, если кому еще актуально:
1. В MSVC 2010 загрузках выбрал английский и установил поверх установленного такого же русского.
2. Удалил %VSINSTALLDIR%\VC\bin\1049\clui.dll
Все стало ОК.


Название: Re: Кодировка консоли сборки
Отправлено: lit-uriy от Февраль 03, 2013, 17:04
>>После обновления MinGW частично вывод сборки был на русском. Как это объяснить?
это MinGW использует кодировку IBM866, или только часть MinGW (компилятор, линкер,...)


Название: Re: Кодировка консоли сборки
Отправлено: jinrou85 от Декабрь 26, 2013, 11:13
Довольно простой способ с костылем от Микрософта.

Этап сборки
Сборка: jom.exe

Заменить на
Особый: chcp 1251 > nul && jom.exe

Данный костыль действует только на текущий проект, но не требует выкачивания подозрительных архивов, копания в реестре или изменения в файлах конфигурации креатора.


Название: Re: Кодировка консоли сборки
Отправлено: Alex Custov от Декабрь 26, 2013, 19:22
Данный костыль действует только на текущий проект, но не требует выкачивания подозрительных архивов, копания в реестре или изменения в файлах конфигурации креатора.

Не работает. Qt Creator 3.0.0. Я использую wrapper в виде бат файла chcp-wrapper.bat:

Код:
@echo off
chcp 1251
%*

В креаторе в настройках проекта ставим "Заменить mingw32-make" на "chcp-wrapper.bat", "Параметры make" в "mingw32-make" или в "jom" в зависимости от того кто что использует.


Название: Re: Кодировка консоли сборки
Отправлено: b-s-a от Январь 09, 2014, 11:01
https://bugreports.qt-project.org/browse/QTCREATORBUG-316


Название: Re: Кодировка консоли сборки
Отправлено: Susenin от Январь 23, 2014, 16:16
Я кодировку меняю в реестре: ищу строчки OEMCP и 866 меняю на 1251. Обычно 2 совпадения.
Я что-то делаю неправильно? Народ тут пишет патчи ...

Да, у меня Windows 7 и msvс2012.

Update.
Забыл еще один пункт. Если его не сделать, в консоли (та которая cmd.exe) будут кракозябы.
В редакторе реестра идем в раздел HKEY_CURRENT_USER -> Console. Создаем там новый строковый параметр с именем "FaceName".  Присваиваем ему значение "Lucida Console".
Параметр "FontFamily" меняем на 0x36.