Если UTF-8 умрёт, то на его смену придёт что-либо гораздо более несовместимое с ASCII
Так я про это и говорю. Если бы не так, то, действительно, можно было бы сразу прописать в стандарте, что char совместим с ASCII и потому всегда 1 байт. Но, это, по ходу, не прописано явно чтобы после смерти UTF-8 можно было спокойно сделать char хоть 4 байта, и при этом пришлось меньше править стандарт. А не так, что при текущих формулировках они уже сейчас должны сделать char 3 байта минимум, поскольку, видите ли, «basic character set» - это слишком много символов.
Если я помню, то char - 1 байт перманентно. Как он умудряется хранить такое? Не допёр.
Элементарно, Ватсон. Во первых, char могут быть разными, а во вторых, есть строки и массивы. Передаёшь такую строку состоящую из однобайтовых элементов, в которой внутри всё что угодно храниться может, на вывод в консоль с кодировкой утф-8 и либы ОС этот массив байтов парсят, конвертируют на лету в набор утф-8 символов, которые и выводят на экран. Перекодировки на лету, много перекодировок, вот и весь секрет как массивы из однобайтовых элементов вдруг превращаются в утф-8 текст.
Ты ж сам уже ссылку давал (но почему-то удалал). Многие, и ты в том числе, расчитывают на 4 байта, а это опасно, ибо может быть 6. Переполнение буфера, всё такое.
В ISO/IEC 10646:2003 UTF-8 определялась для максимум 6 байт. В более новых версиях решили ограничиться 4. Мне неизвестны стандарты, которые бы расширяли определение UTF-8 так, как написано в русской википедии.