На линуксе создал проект qmake. Все файлы в utf-8. Создал

заголовочник и там сгенерировал qmap в виде
const static QMap<uint8_t, QString> mMapErrors = {...}
Где в QString находится кириллица. Так же в самом коде есть кириллица.

Решил испытать на виндовсе msvc. Приложение консольное, но весь вывод идет не в терминал а в вывод QtCreator
Текст который находится в коде выводится нормально. Текст который в QMap выводился в виде "???? ??? ???".
Добавил в pro файл CODECFORSRC=UTF-8. Теперь при запуске программы весь текст виден нормально.

Теперь решил исходники перенести в подпроект в pri файл. При запуске теперь весь текст выводится "???? ????", что в коде текст, что в qmap.
С u8"..." текст получается "Карта".
Какой нужен флаг компилятору msvc, чтобы он понимал что весь код в utf-8 ?

8 ответов

23 просмотра

По идее нужны всего лишь два дефайна UNICODE и _UNICODE (но qmake их выставляет самостоятельно)

Mr.Mait- Автор вопроса
Michael Chambers
По идее нужны всего лишь два дефайна UNICODE и _UN...

Добавил в pri файл CONFIG+=utf8_source Вылетело 90тыс предупреждений. Я использую одну стороннюю библиотеку (dll + заголовочник). У этой библиотеки нету кирилицы в коде, а в заголовочнике множество прототипов функций и очень много комментария в коде. Все 90тыс предупреждений относились к коментариям функций. Выяснил что заголовочник в кодировке 1251. Походу это ломает компилятор. Зато мой проект после компиляции стал выводить на русском как надо. Наверное из-за этой библиотеки msvc компилирует все в кодировке 1251. Подумаю что с этим сделать

Mr.Mait
Добавил в pri файл CONFIG+=utf8_source Вылетело 90...

Посмотрите внимательно дефайны в заголовках этой библиотеки, а 1251 действительно враг тут вам

Mr.Mait- Автор вопроса
Michael Chambers
Посмотрите внимательно дефайны в заголовках этой б...

Поменял кодировку заголовочника библиотеки. Все равно остались проблемы с кодировкой на msvc с pri файлом. Добавил в pri CONFIG+=utf8_source, предупреждений теперь нет, т.к. все файлы utf8. При запуске приложения появился нормальный вывод. Этот конфиг работает и на линуксе, что не мешает кроссплатформенности. Вроде бы писали что для мингв тоже работает. В доке написано: Specifies that the project's source files use the UTF-8 encoding. By default, the compiler default is used.

Mr.Mait- Автор вопроса
Mr.Mait
qt 5.15.2, msvc 2015 64 bit

2015... тогда всё ясно

Mr.Mait- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта