Консоль не выводит символы Юникода - PullRequest
0 голосов
/ 05 октября 2018

В настоящее время я делаю консольную игру Tetris для изучения основ языка C. Однако я не могу печатать символы Unicode на консоли.Люди просто используют printf("■□□□■■■□□■■□□■■");, но это не работает для меня.Также я не могу вручную вводить символы Unicode в консоль.

1 Ответ

0 голосов
/ 06 октября 2018

Чтобы записать Unicode напрямую в консоль, вы должны использовать широкие символьные API и включить стандартный вывод для использования UTF-16.Ваш исходный файл должен быть сохранен в UTF-8 with BOM (по крайней мере, с компиляторами Microsoft):

#include <stdio.h>
#include <io.h>
#include <fcntl.h>

int main()
{
    _setmode(_fileno(stdout),_O_U16TEXT);
    wprintf(L"░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±\n");
    wprintf(L"\u0518\n"); // CYRILLIC CAPITAL LETTER YAE U+0518
}

Вывод:

░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±
Ԙ

Вывод будет зависеть от вашей поддержки шрифтов дляпечатные символы.Первая строка символов обычно поддерживается в Windows 10 США. Вторая строка представляет собой символ Unicode вне обычных кодовых страниц США, но поддерживается шрифтом Consolas.Он указывается с использованием его кодовой точки Unicode через escape-код, но может быть набран непосредственно в исходном коде с помощью такого инструмента, как Карта символов Windows или установка соответствующего редактора методов ввода (IME).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...