array[i] = '\u25A1'
не будет правильно компилироваться в C. По крайней мере, вы должны получить предупреждение компилятора.
'\u25A1'
относится к типу char16_t
(два байта на символ), здесь это не имеет значения.
\u
может использоваться в качестве escape-последовательности в строковом литерале для представления кодовых точек Unicode ниже 0x10000
.Пример:
strcpy(array, u8"\u25A0");
printf(array);
Output: ■
Обратите внимание, что u8"\u25A0"
сохраняется как 4 байта (0xE2, 0x96, 0xA0
+ нулевой символ) на основе преобразования UTF8.Он также может быть напечатан следующим образом (если консоль поддерживает вывод UTF8):
strcpy(array, "\xE2\x96\xA0");
printf(array);
Output: ■
Кроме того, строка должна заканчиваться нулем, последний символ в строке долженбыть нулем.
Чтобы сохранить UTF8 в байтах, вы можете назначить значения следующим образом:
array[0] = 0xE2;
array[1] = 0x96;
array[2] = 0xA0;
array[3] = '\0';
Если ваша среда разработки поддерживает это, вы также можете объявить
char array[] = u8"■";