BSTR可以保存超过16位的字符来表示吗?

noc*_*ura 3 c++ windows unicode utf-8

我对Windows BSTR和WCHAR等感到困惑.WCHAR是一个16位字符,用于允许Unicode字符.那些需要超过16位的字符呢?一些UTF-8字符需要更多.这是Windows的限制吗?

编辑:谢谢你的所有答案.我想我理解Unicode方面.我仍然对Windows/WCHAR方面感到困惑.如果WCHAR是16位字符,那么Windows是否真的使用其中的2个来表示大于16位的代码点,或者数据是否被截断?

Jon*_*cto 5

UTF-8不是Windows的BSTR或WCHAR类型中使用的编码.相反,它们使用UTF-16,它使用1或2个WCHAR定义Unicode集中的每个代码点.2 WCHAR提供与4字节UTF-8完全相同的代码点数.

因此,Windows字符集处理没有限制.

  • 我似乎记得Windows曾经将Unicode字符串视为UCS-2。真的吗?它何时更改? (2认同)