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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как победить кракозябры в консоли сборки?  (Прочитано 23788 раз)
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" завершился нормально.

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

С уважением, ВВК
Записан
frostyland
Гость
« Ответ #1 : Декабрь 07, 2010, 09:41 »

Нашел "универсальный декодер кириллицы", поподставлял туда эти кракозябры,
оказалось, что выводятся они в кодировке ibm866.
Это любопытно, учитывая, что часть сообщений нормально отображается по-русски.
---
А победить так и не смог... Перевел декодером - ничего страшного, на том и успокоился )
Записан
deaks
Гость
« Ответ #2 : Декабрь 07, 2010, 11:04 »

ну собственно ibm866 - стандартная кодировка для всех консолей винды
Записан
frostyland
Гость
« Ответ #3 : Декабрь 07, 2010, 11:25 »

ну собственно ibm866 - стандартная кодировка для всех консолей винды
Ну собственно, меня не интересует этот вопрос. Меня интересует, почему половина кракозябрится, а половина - нормальная кириллица. Во вторых, уверен, это и не консоль вовсе, хотя так и названа, а обычное виндовое окно, ничем по сути не отличающееся от других суб-окон Qt.
Записан
Maratus
Гость
« Ответ #4 : Июнь 03, 2011, 12:15 »

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

Побороли как-то эту проблему?
Напрягает что каждую ошибку при компиляции приходится копировать в декодер и там читать Грустный
Или хотя бы можно как-то все на английский язык переключить?

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

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #6 : Июнь 06, 2011, 08:28 »

Могу предложить только костыльное решение проблемы:
Код:
cmd /c chcp 1251 >nul && mingw32-make.exe clean
Записан
Maratus
Гость
« Ответ #7 : Июнь 07, 2011, 14:28 »

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

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

Или можно вообще выключить русский язык там, проще на английском чтобы все было?
Записан
frostyland
Гость
« Ответ #8 : Июнь 08, 2011, 06:11 »

>> Или можно вообще выключить русский язык там, проще на английском чтобы все было?
Ошибки в консоли один хрен на русском будут, т.е. кракоябрами.
Разве что ставить английскую винду
Записан
vdm0
Гость
« Ответ #9 : Август 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 (по неизвестным мне пока причинам). Так что подумайте: оно того ст́оит?
Записан
gogi
Гость
« Ответ #10 : Август 05, 2011, 10:09 »

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

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

LC_MESSAGES=en_EN.UTF-8 mingw32-make.exe
Записан
EviGL
Гость
« Ответ #11 : Август 18, 2011, 19:52 »

Та же проблема, Windows 7 русская, последний на данный qt. Просто не могу начать работу со средой: абсолютно все ошибки в кривой кодировке, что делает изучение qt абсолютно нереальным. Соответственно, так как я новичок в кьюте, вышеуказанные советы применить в основном не получилось (один вроде как только для никсов, один только для какой-то там очистки, один для файла, которых сотня).
Прошу разъяснить хотя бы одно толковое решение проблемы, чтобы была возможность начать хоть как-то работать в среде.
А под линуксом этой проблемы нету? В крайнем случае попробую и такой вариант...
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #12 : Август 18, 2011, 20:25 »

http://www.prog.org.ru/topic_11639_0.html
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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