pvzzombs Ответов: 1

Символы C++ utf8 выше 127 не отображаются должным образом


Я работаю в консоли окна, и кажется, что окно не поддерживает символы utf-8, такие как символ 0x80, который является€, но это консоль окна, которую он показывает пустым.

Обратите внимание, что я использую wcout и просто хочу показать правильный символ для диапазона от 0x80 до 0xff

Что я уже пробовал:

Я программирую это на C++ и использую Code::Blocks IDE с компилятором mingw.

Я попытался добавить SetConsoleOutputCP(CP_UTF8) в свой основной код. После этого символы выше 0x7f будут пустыми, если я попытаюсь удалить строку
SetConsoleOutputCP(CP_UTF8)

Затем, 0х80 персонажа изменится на', а не евро.

Спасибо.

0x01AA

Может быть, это поможет: Приставка.Свойство OutputEncoding (System) | Microsoft Docs[^]

pvzzombs

@0x01AA кстати, спасибо, как насчет C++?

1 Ответов

Рейтинг:
2

OriginalGriff

Это потому, что консольный шрифт их не поддерживает - вам нужно будет выбрать другой шрифт, что нетривиально: Установка шрифта текста в консольном приложении[^]
Это может помочь вам выбрать подходящий шрифт: https://www.tenforums.com/tutorials/93961-change-console-window-font-font-size-windows.html[^]

Имейте в виду, что консольное приложение нуждается в непропорциональном шрифте-большинство окон пропорциональны, поэтому оно хорошо выглядит как текст, а не выстраивается в столбцы:
Непропорциональный, 12pt:
Быстрая бурая лиса перепрыгивает через ленивую собаку
Это текст, чтобы показать различные длины.


Пропорциональный, 12pt:
Быстрая бурая лиса перепрыгивает через ленивую собаку
Это текст, чтобы показать различные длины.