Я написал программу на C, используя Code Blocks для Linux. Как вы можете видеть ниже, он имеет много «графических частей», которые несовместимы напрямую с Windows (такие как символы Юникода и цветные тексты). Мне было интересно, есть ли быстрый способ или обходной путь, чтобы эта программа правильно отображалась на компьютере с Windows без необходимости переписывать код.
#define INRED "\033[1;31m"
#define INGREEN "\033[1;32m"
#define INYELLOW "\033[1;33m"
#define INBLUE "\033[1;34m"
#define INWHITE "\033[1;37m"
#define INRESETCOLOR "\033[0m"
#define ERRORCOLOR "\033[1;31m\a"
#define WINCOLOR "\033[5;1;39m"
#define BLOCK "\u2B24"
#define BLACKMATCH "\u25A0 "
#define WHITEMATCH "\u25A1 "
#define RBLOCK INRED BLOCK INRESETCOLOR " "
#define GBLOCK INGREEN BLOCK INRESETCOLOR " "
#define BBLOCK INBLUE BLOCK INRESETCOLOR " "
#define YBLOCK INYELLOW BLOCK INRESETCOLOR " "
#define PROMPT printf("\n> ");
#define CLEARSCR printf("\033[H\033[J");
РЕДАКТИРОВАТЬ: Вот решение проблемы с управляющими последовательностями ANSI Как заставить консоль win32 распознавать escape-последовательности ANSI/VT100? но не для неправильного отображения символов Unicode.
#define BLOCK "\u2B24"
и то, и другое. - person melpomene   schedule 20.11.2018u8"\u2B24"
, открыть командное окно какcmd /u
, ввестиchcp 65001
, установить шрифт Lucida Console (или другой моноширинный шрифт Unicode, например DejaVu Sans Mono), а затем распечатать UTF-8. - person Davislor   schedule 20.11.2018printf()
иwprintf()
имеет нестандартный спецификатор формата non-portable%S
, который может быть полезен для печати UTF-8. - person Davislor   schedule 20.11.2018