3

Unicodeを学習しようとしていますか?私にとって最も難しい部分はエンコーディングです。BSTR(基本文字列)コンテンツコードはU + 10000以上を指すことができますか?いいえの場合、BSTRのエンコーディングは何ですか?

4

2 に答える 2

2

Microsoftの話では、Unicodeは一般にUTF-16(メモリが機能する場合はリトルエンディアン)と同義です。BSTRの場合、答え次のように思われます。

  • Microsoft Windowsでは、Unicode文字の文字列(ワイドまたは2バイト文字)で構成されます。
  • Apple Power Macintoshでは、1バイトの文字列で構成されます。
  • 複数のヌル文字が埋め込まれている場合があります。

したがって、Windowsでは、はい、基本多言語面の外側に文字を含めることができますが、これらを格納するには2つの「ワイド」文字が必要になります。

于 2010-10-29T19:49:43.703 に答える
1

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などで使用されていた可能性もあります。)

于 2010-10-29T20:24:55.033 に答える