是BSTR UTF-16编码?

我正在尝试学习Unicode?对我来说,最困难的部分是编码。 BSTR(基本字符串)内容代码是否可以指向U + 10000或更高?如果不是,那么BSTR的编码是什么?     
已邀请:
在Microsoft中,Unicode通常与UTF-16同义(如果内存服务,则为小端)。在BSTR的情况下,答案似乎取决于:      在Microsoft Windows上,由一串Unicode字符组成(宽或或   双字节字符)。   在Apple Power Macintosh上,由单字节字符串组成。   可能包含多个嵌入的空字符。    因此,在Windows上,是的,它可以包含基本多语言平面之外的字符,但这些字符需要存储两个“宽”字符。     
Windows上的BSTR最初包含UCS-2,但原则上可以使用代理对包含整个unicode集。 UTF-16支持实际上取决于接收字符串的API - BSTR没有说明如何处理它。大多数API现在都支持UTF-16。 (Michael Kaplan对细节进行了分类。) Windows标题仍然包含BSTR的另一个定义,它基本上是
#if defined(_WIN32) && !defined(OLE2ANSI)
   typedef wchar_t OLECHAR;
#else
   typedef char OLECHAR;
#endif
typedef OLECHAR * BSTR;
然而,没有真正的理由考虑
char
,除非你拼命想要兼容这一点。 (IIRC它是活跃的 - 或者可能被激活 - 用于早期的MFC构建,甚至可能已经在Office for Mac或类似的东西中使用过。)     

要回复问题请先登录注册