我正在尝试学习Unicode?对我来说,最困难的部分是编码。 BSTR(基本字符串)内容代码是否可以指向U + 10000或更高?如果不是,那么BSTR的编码是什么?
答案 0 :(得分:2)
在Microsoft-speak, Unicode中通常与UTF-16同义(如果内存服务,则为小端)。在BSTR的情况下,答案似乎是它取决于:
- 在Microsoft Windows上,由一串Unicode字符组成(宽或或 双字节字符)。
- 在Apple Power Macintosh上,由单字节字符串组成。
- 可能包含多个嵌入的空字符。
因此,在Windows上,是的,它可以包含基本多语言平面之外的字符,但这些字符需要两个“宽”字符来存储。
答案 1 :(得分:1)
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或类似的东西中使用过。)