次の方法で共有


UnicodeEncoding.GetPreamble メソッド

このインスタンスのコンストラクタがバイト順マークのサポートを要求した場合は、ビッグ エンディアン形式またはリトル エンディアン形式でエンコードされた Unicode バイト順マークを返します。

Overrides Public Function GetPreamble() As Byte()
[C#]
public override byte[] GetPreamble();
[C++]
public: unsigned char GetPreamble()  __gc[];
[JScript]
public override function GetPreamble() : Byte[];

戻り値

このインスタンスのコンストラクタが、バイト順マークのサポートを要求しなかった場合、つまり、 UnicodeEncoding コンストラクタの byteOrderMark パラメータが false の場合は、長さ 0 のバイト配列。

コンストラクタがビッグ エンディアン バイト順マークのサポートを要求した場合は、16 進数 0xFE、0xFF が格納された要素を持つバイト配列。コンストラクタがリトル エンディアン バイト順マークのサポートを要求した場合は、16 進数 0xFF、0xFE が格納された要素を持つバイト配列。

解説

バイト順マーク (U+FEFF) は、UTF-16 エンコーディングの先頭に連結すると、 System.IO.StreamReader などのクラスで、残りのエンコーディングがビッグ エンディアン形式またはリトル エンディアン形式のどちらであるかを類推できるようになります。

このインスタンスのコンストラクタが、バイト順マークのサポートを要求した場合は、この戻り値を UTF-16 エンコーディングの先頭に連結します。

使用例

[Visual Basic, C#, C++] GetPreamble メソッドを使用して、 UnicodeEncoding のインスタンスの Unicode バイト順マークをビッグエンディアン形式またはリトルエンディアン形式で返す方法を次の例に示します。

 
Imports System
Imports System.Text
Imports Microsoft.VisualBasic

Class UnicodeEncodingExample
    
    Public Shared Sub Main()
        Dim byteOrderMark() As Byte
        Dim b As Byte
        
        byteOrderMark = Encoding.Unicode.GetPreamble()
        Console.WriteLine("Default (little-endian) Unicode Preamble:")
        For Each b In  byteOrderMark
            Console.Write("[{0}]", b)
        Next b
        Console.WriteLine(ControlChars.NewLine)
        
        Dim bigEndianUnicode As New UnicodeEncoding(True, True)
        byteOrderMark = bigEndianUnicode.GetPreamble()
        Console.WriteLine("Big-endian Unicode Preamble:")
        For Each b In  byteOrderMark
            Console.Write("[{0}]", b)
        Next b
    End Sub 'Main
End Class 'UnicodeEncodingExample

[C#] 
using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        Byte[] byteOrderMark;
        
        byteOrderMark = Encoding.Unicode.GetPreamble();
        Console.WriteLine("Default (little-endian) Unicode Preamble:");
        foreach (Byte b in byteOrderMark) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine("\n");

        UnicodeEncoding bigEndianUnicode = new UnicodeEncoding(true, true);
        byteOrderMark = bigEndianUnicode.GetPreamble();
        Console.WriteLine("Big-endian Unicode Preamble:");
        foreach (Byte b in byteOrderMark) {
            Console.Write("[{0}]", b);
        }
    }
}

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::Text;
using namespace System::Collections;

int main()
{
   Byte byteOrderMark[];

   byteOrderMark = Encoding::Unicode -> GetPreamble();
   Console::WriteLine(S"Default (little-endian) Unicode Preamble:");
   IEnumerator* myEnum = byteOrderMark->GetEnumerator();
   while (myEnum->MoveNext())
   {
      Byte b = *__try_cast<Byte __gc*>(myEnum->Current);
      Console::Write(S"[{0}]", __box(b));
   }
   Console::WriteLine(S"\n");

   UnicodeEncoding* bigEndianUnicode = new UnicodeEncoding(true, true);
   byteOrderMark = bigEndianUnicode -> GetPreamble();
   Console::WriteLine(S"Big-endian Unicode Preamble:");
   myEnum = byteOrderMark->GetEnumerator();
   while (myEnum->MoveNext())
   {
      Byte b = *__try_cast<Byte __gc*>(myEnum->Current);
      Console::Write(S"[{0}]", __box(b));
   }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

UnicodeEncoding クラス | UnicodeEncoding メンバ | System.Text 名前空間