Нет, это управляющие символы в ASCII. Терминал, на котором вы их распечатываете, использовал CP437 , который был набором символов исходного IBM PC. Он использует ту же нумерацию для символов, которые есть в ASCII, но расширенную ASCII с акцентированными буквами, греческими буквами, символами рисования прямоугольников и несколькими дингбатами. Само собой разумеется, это абсолютно непереносимо; ваша программа будет работать только в командном терминале Windows, а не в любой другой системе; и эти символы даже не будут работать правильно в более распространенной кодировке Windows, CP1252 .
Если вы хотите печатать специальные символы переносным способом, вы должны использовать Unicode , который является универсальным набором символов, в котором масти карт имеют значение 0x2660–0x2667 . См. Абсолютный минимум, который должен знать каждый разработчик программного обеспечения Абсолютно, положительно, необходимо знать о Юникоде и наборах символов (никаких оправданий!) , чтобы получить общий обзор Юникода.
Обратите внимание, что способ, позволяющий приложению использовать Unicode, различается в Unix и Windows , и вам все равно нужно конвертировать различные кодировки, поскольку Unicode имеет более одной кодировки (включая частичные кодировки, такие как устаревшие наборы символов), но по крайней мере вы можете работать с одним и тем же универсальным набором символов независимо от того, на какой платформе вы работаете или используете кодировку.