Крякозябры в Qt под Visual Studio
Итак, если вы используете версию Qt под компилятор Visual Studio, то в консоли, где появляются сообщения об ошибках и предупреждениях, вместо русских букв будут появляться крякозябры. Будем это лечить.
Крякозябры
Вот так выглядят крякозябры:
Данная проблема возникает, если использовать русскую версию Visual Studio, ввиду разных кодировок в консолях. В Qt нам нужна кодировка cp1251
.
Вся проблема, кроется в том, что специальная утилита jom
, неправильно задает кодировку. Мы в ней исправим это и перекомпилируем утилиту самим же Qt.
Новый способ решения проблемы
Вот только несколько дней назад всё работало на Visual Studio 2017 и Qt 5.11.1. И старый способ с перестраиванием jom проекта работал, но обновил обе программы, и способ работать перестал. Чьё обновление виновато — не знаю.
Поэтому придется обойтись без переделки jom. Алгоритм решения: переводим Visual Studio на английский язык и удаляем русский пакет полностью. И сообщения компилятора будут приходить не крякозябрами, а в виде нормальных английских сообщений.
Сейчас нет возможности проверить, но в прошлом (пару лет назад) при переводе Visual Studio на английский язык после установки Qt возникали проблемы с компиляцией. Так что лучше перевести на английский язык Visual Studio, а потом установить Qt (как у меня сейчас), но может быть уже всё пофиксили.
Итак, меняем язык интерфейса Visual Studio на английский (сообщения компилятора всё равно будут приходить на русском в виде крякозябр):
Запускаем установщик Visual Studio Installer:
И в разделе Языковые пакеты
снимаем галочку с русского пакета:
Ждем, когда Visual Studio всё удалит и, скорее всего, установит какие-то свои обновления. После этого перезапускаем Qt Creator. Теперь при компиляции сообщения будут приходить нормальными, но на английском:
P.S. Правда после этого приложения под UWP перестали компилироваться и выдают ошибку вроде этой:
13:44:39: Could not start process "windeployqt.exe" D:\Harrix\Projects\QtProjects\untitled12\_build\release\untitled12.exe --qmldir D:\Harrix\Projects\QtProjects\untitled12
Error while building/deploying project untitled12 (kit: Qt 5.11.1 for UWP 64bit (MSVC 2017))
The kit Qt 5.11.1 for UWP 64bit (MSVC 2017) has configuration issues which might be the root cause for this problem.
When executing step "Run windeployqt"
Старый способ решения проблемы
Может потом старый способ заработает, так что оставлю его в статье.
Всё описанное ниже проводилось на Windows 10. Были установлены Visual Studio 2015 Community, Qt 5.8.0 под Visual Studio.
Выкачка исходных кодов jom
Выкачать можно с помощью консоли Git:
git clone https://github.com/qt-labs/jom
Если вы не знаете как выполнить эту команду, то перейдите по адресу https://github.com/qt-labs/jom и скачайте исходные коды программы с сайта:
Изменение jom
Открываем Qt Creator. И там переходим к пункту открытия проекта:
И в папке с исходниками jom
находим файл jom.pro
и открываем его:
В подпроекте app
находим файл main.cpp
:
Находим так функцию main
:
И там в самом начале этой функции добавляем строчки:
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Сохраняем изменения Ctrl
+ S
.
Компилировать будем в режиме Release
:
И компилируем наш проект:
В процессе компиляции вы увидим несколько предупреждений. Это ничего страшного. Главное, чтобы ошибок не было.
Кстати, предупреждения будут с крякозябрами:
Через некоторое время серый треугольник запуска проекта опять станет зеленым. Значит, проект скомпилировался:
Находим скомпилированный jom файл
Закройте Qt.
Перейдите в папку, где у вас находятся скомпилированные файлы Qt.
По умолчанию, если у вас проект, например, называется HarrixTesting
, то в папке HarrixTesting
, где находится папка, появится папка наподобие такой: build-HarrixTesting-Desktop_Qt_5_5_0_MinGW_32bit-Release
(это под MinGW компилятор пример):
В этой папке меня интересует папка bin
:
Там должен быть файл jom.exe
:
Замена jom файла
Переходим в папку, где находится файл qtcreator.exe
. У меня это папка C:\Qt\Qt5.8.0\Tools\QtCreator\bin
:
Переименуйте его, чтобы на всякий случай не потерять, если что пойдет не так:
И вставьте сюда скомпилированный jom.exe
файл:
Всё. Теперь можете запускать Qt и проверять крякозябры. У меня они ушли:
Сейчас у меня стоит Qt, поставленный через онлайн установщик. И кроме основной версии Qt Creator у меня стоят Preview версии Qt Creator. Поэтому измененный файл кидаю и в эти папки, например, C:\Qt\Tools\Preview\Qt Creator 4.7.0-rc1\bin
.<ul><li>Qt logo 2016.svg by Qt Project / (2019-01-26)</li></ul>
Статья обновлена 2018-08
Тэги:
- Qt
- Visual Studio
- Крякозябры
Категории:
- blog
- it
- programming
Итак, если вы используете версию Qt под компилятор Visual Studio, то в консоли, где появляются сообщения об ошибках и предупреждениях, вместо русских букв будут появляться крякозябры. Будем это лечить.
Итак, если вы используете версию Qt под компилятор Visual Studio, то в консоли, где появляются сообщения об ошибках и предупреждениях, вместо русских букв будут появляться крякозябры. Будем это лечить.