C ++语言标准没有显式编码的概念。它仅包含“系统编码”的不透明概念,为此,它
wchar_t是“足够大”的类型。
要将不透明的系统编码转换为显式的外部编码,必须使用外部库。选择的库将是
iconv()(from
WCHAR_T到
UTF-8),它是Posix的一部分,可在许多平台上使用,尽管
WideCharToMultibyte可以保证在Windows上这些函数可以产生UTF8。
C ++ 11 以的形式添加新的UTF8 文字
std::string s = u8"Hello World:U0010FFFF";。这些已经在UTF8中了,但是
wstring除了通过我描述的方式之外,它们无法与不透明接口。



