如何在C ++中使用UTF-8和Unicode? && C ++ 20 char8_t有多大?

假设我想在C ++中存储一个(不是std :: string中的)Unicode字符,我该怎么做? Char8_t是C ++ 20中引入的,但似乎只是unsigned char的typedef,最多存储1字节的信息。某些字符(尤其是像emoji表情这样的特殊字符)一次最多可占用4个字节。

无效的代码示例:

char8_t smth = "😀";

有趣的是,尽管sizeof()表示它为8字节大,但仍会起作用,我对此有些怀疑。

const char* smth = "😀";