На линуксе создал проект 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 ответов

11 просмотров

По идее нужны всего лишь два дефайна 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- Автор вопроса

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

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

Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Это фейк @cruppto_newbot?
Antskup
13
ребят, привет. за какое время бот полученную заявку на вступление в группу может принять \отклонить? Помню речь была про 5 минут, сейчас как?
Роман Ромашин :)
10
Добрый день! Не подскажете как к модели Категории Шопоголика добавить отношение Тейлора. Пробовал по документации, но не получается. Мб уже кто-то делал?
Николай Афанасенко
6
Доброго времени суток. Правильно ли я понимаю, что с введением новой платежной единицы stars, я просто могу оставить текущую платёжку от Юкассы, которая выполняется на сайте с...
Prokhor Chulkov
7
@veranikaEU получилось? Можно увидеть рабочий код?
Alex Kom
8
Тут вопрос они парсить всех ботов будут на предмет услуг платных и смотреть платежные реализации? Или через стукачей будут вычислять индивидуально.
A O
5
вопрос: кто как решает вопрос с динамической подгрузкой скриптов для отдельных страниц с включенным turbo router?
Sergei Toroptsev
25
Привет) Я делаю график зависимости количества показов рекламного объявления от времени (группировка почасовая) и хочу показывать его в таймзоне клиента В базе данных метку в...
Виталий
1
Всем ку, услышал заявление что теперь обязательно в бота встроить телеграм старс в бота, крайний срок - в июле Правда ли это?
Ilya Shvechikov
4
Карта сайта