Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: frostyland от Декабрь 05, 2010, 17:26



Название: Как победить кракозябры в консоли сборки?
Отправлено: frostyland от Декабрь 05, 2010, 17:26
Здравствуйте.

В консоли сборки часть сообщений выводится вот такими зябрами
Цитировать
mingw32-make: Leaving directory `V:/work/Qt/undo-build-desktop'
ЌҐ г¤ Ґвбп ­ ©вЁ V:\work\Qt\undo-build-desktop\release\moc_mainwindow.cpp
ЌҐ г¤ Ґвбп ­ ©вЁ V:\work\Qt\undo-build-desktop\release\qrc_undo.cpp
Процесс "C:\Qt\qtcreator-2.0.94\mingw\bin\mingw32-make.exe" завершился нормально.

Причем, вне зависимости от языка среды - как видно, русские сообщения корректны.
Иногда это очень важные сообщения, и нифига не понятно, что хочет сказать среда.
Как победить?

С уважением, ВВК


Название: Re: Как победить кракозябры в консоли сборки?
Отправлено: frostyland от Декабрь 07, 2010, 09:41
Нашел "универсальный декодер кириллицы (http://2cyr.com/decode/?lang=ru)", поподставлял туда эти кракозябры,
оказалось, что выводятся они в кодировке ibm866.
Это любопытно, учитывая, что часть сообщений нормально отображается по-русски.
---
А победить так и не смог... Перевел декодером - ничего страшного, на том и успокоился )


Название: Re: Как победить кракозябры в консоли сборки?
Отправлено: deaks от Декабрь 07, 2010, 11:04
ну собственно ibm866 - стандартная кодировка для всех консолей винды


Название: Re: Как победить кракозябры в консоли сборки?
Отправлено: frostyland от Декабрь 07, 2010, 11:25
ну собственно ibm866 - стандартная кодировка для всех консолей винды
Ну собственно, меня не интересует этот вопрос. Меня интересует, почему половина кракозябрится, а половина - нормальная кириллица. Во вторых, уверен, это и не консоль вовсе, хотя так и названа, а обычное виндовое окно, ничем по сути не отличающееся от других суб-окон Qt.


Название: Re: Как победить кракозябры в консоли сборки?
Отправлено: Maratus от Июнь 03, 2011, 12:15
Побороли как-то эту проблему?
Напрягает что каждую ошибку при компиляции приходится копировать в декодер и там читать :(
Или хотя бы можно как-то все на английский язык переключить?


Название: Re: Как победить кракозябры в консоли сборки?
Отправлено: frostyland от Июнь 06, 2011, 07:03
Побороли как-то эту проблему?
Напрягает что каждую ошибку при компиляции приходится копировать в декодер и там читать :(
Или хотя бы можно как-то все на английский язык переключить?

неа, не поборол.
НО как-то так - просто все реальные ошибки все-таки на английском, или вменяемой кириллице, а кракозябрами что-то типа "скопировано стока-то файлов" или "не смог скопировать файл" - не влияют на работу.


Название: Re: Как победить кракозябры в консоли сборки?
Отправлено: LisandreL от Июнь 06, 2011, 08:28
Могу предложить только костыльное решение проблемы:
Код:
cmd /c chcp 1251 >nul && mingw32-make.exe clean


Название: Re: Как победить кракозябры в консоли сборки?
Отправлено: Maratus от Июнь 07, 2011, 14:28
неа, не поборол.
НО как-то так - просто все реальные ошибки все-таки на английском, или вменяемой кириллице, а кракозябрами что-то типа "скопировано стока-то файлов" или "не смог скопировать файл" - не влияют на работу.
Проблема в том, что у меня как раз ошибки компиляции в кракозябрах выводятся :(

Могу предложить только костыльное решение проблемы:
Код:
cmd /c chcp 1251 >nul && mingw32-make.exe clean
как бы этот костыль к этапу сборки применить?

Или можно вообще выключить русский язык там, проще на английском чтобы все было?


Название: Re: Как победить кракозябры в консоли сборки?
Отправлено: frostyland от Июнь 08, 2011, 06:11
>> Или можно вообще выключить русский язык там, проще на английском чтобы все было?
Ошибки в консоли один хрен на русском будут, т.е. кракоябрами.
Разве что ставить английскую винду


Название: Re: Как победить кракозябры в консоли сборки?
Отправлено: vdm0 от Август 05, 2011, 01:51
Факты:
  • Вывод на консоль производят команды, описанные в Makefile
  • Для пакетных операций над файлами/каталогами в Windows используются консольные команды из cmd.exe
  • Консольные команды в Windows унаследовались от MS-DOS
  • В русифицированной MS-DOS используется кодовая страница ibm866
  • Makefile создаются заново при соответствующем вызове qmake.exe на основании данных из %QTDIR%\mkspecs\%QMAKESPEC%\qmake.conf
Варианты решения:
  • Вместо DOS-овских команд использовать команды с «нормальным» (cp1251) выводом (но где же их взять  :-\)
  • Расширить используемые команды способом, который предложил LisandreL
В любом случае, оба варианта сводятся к правке Makefile, а чтобы надёднее — qmake.conf  (не забываем про резервные копии  ;)). Заменяем код в блоке else (в приведённой части конфигурационного файла):
Код:
!isEmpty(QMAKE_SH) {
 ...
} else {
QMAKE_COPY = copy /y
QMAKE_COPY_DIR = xcopy /s /q /y /i
QMAKE_MOVE = move
QMAKE_DEL_FILE = del
QMAKE_MKDIR = mkdir
QMAKE_DEL_DIR = rmdir
    QMAKE_CHK_DIR_EXISTS = if not exist
}
на вот такой:
Код:
!isEmpty(QMAKE_SH) {
 ...
} else {
QMAKE_COPY = chcp 1251>nul && copy /y
QMAKE_COPY_DIR = chcp 1251>nul && xcopy /s /q /y /i
QMAKE_MOVE = chcp 1251>nul && move
QMAKE_DEL_FILE = chcp 1251>nul && del
QMAKE_MKDIR = chcp 1251>nul && mkdir
QMAKE_DEL_DIR = chcp 1251>nul && rmdir
    QMAKE_CHK_DIR_EXISTS = chcp 1251>nul && if not exist
}
Далее в Qt Creator как обычно вызываем выполнение qmake и работаем как и раньше, наслаждаемся читабельным консольным выводом.
Да, отрицательный момент: первый вызов первой DOS-овской команды всё равно будет в ibm866 (по неизвестным мне пока причинам). Так что подумайте: оно того ст́оит?


Название: Re: Как победить кракозябры в консоли сборки?
Отправлено: gogi от Август 05, 2011, 10:09
Или хотя бы можно как-то все на английский язык переключить?

Установить переменную LC_MESSAGES во что-нибудь отличное от русского языка, например
LC_MESSAGES="en_EN.UTF-8". Можно даже написать несуществующую локаль, в этом случае установится дефолтная английская.
За подробностями - man locale.
А запускать mingw можно так:

LC_MESSAGES=en_EN.UTF-8 mingw32-make.exe


Название: Re: Как победить кракозябры в консоли сборки?
Отправлено: EviGL от Август 18, 2011, 19:52
Та же проблема, Windows 7 русская, последний на данный qt. Просто не могу начать работу со средой: абсолютно все ошибки в кривой кодировке, что делает изучение qt абсолютно нереальным. Соответственно, так как я новичок в кьюте, вышеуказанные советы применить в основном не получилось (один вроде как только для никсов, один только для какой-то там очистки, один для файла, которых сотня).
Прошу разъяснить хотя бы одно толковое решение проблемы, чтобы была возможность начать хоть как-то работать в среде.
А под линуксом этой проблемы нету? В крайнем случае попробую и такой вариант...


Название: Re: Как победить кракозябры в консоли сборки?
Отправлено: kambala от Август 18, 2011, 20:25
http://www.prog.org.ru/topic_11639_0.html