Encoding.GetPreamble Encoding.GetPreamble Encoding.GetPreamble Encoding.GetPreamble Method

定義

派生クラスでオーバーライドされた場合、使用するエンコーディングを指定するバイト シーケンスを返します。When overridden in a derived class, returns a sequence of bytes that specifies the encoding used.

public:
 virtual cli::array <System::Byte> ^ GetPreamble();
public virtual byte[] GetPreamble ();
abstract member GetPreamble : unit -> byte[]
override this.GetPreamble : unit -> byte[]
Public Overridable Function GetPreamble () As Byte()

戻り値

Byte[]

使用するエンコーディングを指定するバイト シーケンスを格納するバイト配列。A byte array containing a sequence of bytes that specifies the encoding used.

- または --or- プリアンブルが不要な場合は、長さ 0 のバイト配列。A byte array of length zero, if a preamble is not required.

次の例では、プリアンブルに基づくエンコードのバイト順を決定します。The following example determines the byte order of the encoding based on the preamble.

using namespace System;
using namespace System::Text;
int main()
{
   Encoding^ unicode = Encoding::Unicode;
   
   // Get the preamble for the Unicode encoder. 
   // In this case the preamblecontains the Byte order mark (BOM).
   array<Byte>^preamble = unicode->GetPreamble();
   
   // Make sure a preamble was returned 
   // and is large enough to containa BOM.
   if ( preamble->Length >= 2 )
   {
      
      // if (preamble->Item[0] == 0xFE && preamble->Item[1] == 0xFF) 
      if ( preamble[ 0 ] == 0xFE && preamble[ 1 ] == 0xFF )
      {
         Console::WriteLine( "The Unicode encoder is encoding in big-endian order." );
      }
      // else if (preamble->Item[0] == 0xFF && preamble->Item[1] == 0xFE) 
      else
      
      // else if (preamble->Item[0] == 0xFF && preamble->Item[1] == 0xFE) 
      if ( preamble[ 0 ] == 0xFF && preamble[ 1 ] == 0xFE )
      {
         Console::WriteLine( "The Unicode encoder is encoding in little-endian order." );
      }
   }
}

/*
This code produces the following output.

The Unicode encoder is encoding in little-endian order.

*/

using System;
using System.Text;

namespace GetPreambleExample
{
   class GetPreambleExampleClass
   {
      static void Main()
      {
         Encoding unicode = Encoding.Unicode;

         // Get the preamble for the Unicode encoder. 
         // In this case the preamble contains the byte order mark (BOM).
         byte[] preamble = unicode.GetPreamble();

         // Make sure a preamble was returned 
         // and is large enough to containa BOM.
         if(preamble.Length >= 2)
         {
            if(preamble[0] == 0xFE && preamble[1] == 0xFF)
            {
               Console.WriteLine("The Unicode encoder is encoding in big-endian order.");
            }
            else if(preamble[0] == 0xFF && preamble[1] == 0xFE)
            {
               Console.WriteLine("The Unicode encoder is encoding in little-endian order.");
            }
         }
      }
   }
}

/*
This code produces the following output.

The Unicode encoder is encoding in little-endian order.

*/
Imports System
Imports System.Text

Namespace GetPreambleExample
   Class GetPreambleExampleClass
      Shared Sub Main()
         Dim [unicode] As Encoding = Encoding.Unicode

         ' Get the preamble for the Unicode encoder. 
         ' In this case the preamble contains the byte order mark (BOM).
         Dim preamble As Byte() = [unicode].GetPreamble()

         ' Make sure a preamble was returned 
         ' and is large enough to contain a BOM.
         If preamble.Length >= 2 Then
            If preamble(0) = &HFE And preamble(1) = &HFF Then
               Console.WriteLine("The Unicode encoder is encoding in big-endian order.")
            Else
               If preamble(0) = &HFF And preamble(1) = &HFE Then
                  Console.WriteLine("The Unicode encoder is encoding in little-endian order.")
               End If
            End If
         End If
      End Sub
   End Class
End Namespace

'This code produces the following output.
'
'The Unicode encoder is encoding in little-endian order.
'

注釈

必要に応じて、Encodingオブジェクトは、エンコード プロセスの結果のバイトのシーケンスに付けるバイトの配列である preamble を提供します。Optionally, the Encoding object provides a preamble that is an array of bytes that can be prefixed to the sequence of bytes resulting from the encoding process. プリアンブルに (Unicode コード ポイント U+FEFF) でバイト順マークが含まれている場合は、バイト順と変換形式または UTF デコーダーが役立ちます。If the preamble contains a byte order mark (in Unicode, code point U+FEFF), it helps the decoder determine the byte order and the transformation format or UTF.

Unicode バイト順マーク (BOM) が (16 進数) で、次のようにシリアル化されます。The Unicode byte order mark (BOM) is serialized as follows (in hexadecimal):

  • UTF 8:EF BB BFUTF-8: EF BB BF

  • Utf-16 ビッグ エンディアン バイト順:FE FFUTF-16 big endian byte order: FE FF

  • Utf-16 リトル エンディアン バイト順:FF FEUTF-16 little endian byte order: FF FE

  • Utf-32 ビッグ エンディアン バイト順:00 00 FE FFUTF-32 big endian byte order: 00 00 FE FF

  • Utf-32 リトル エンディアン バイト順:FF FE 00 00UTF-32 little endian byte order: FF FE 00 00

特定の id への参照が失われている場合はそのファイルのエンコーディングのほとんどを提供するために、BOM を使用する必要があります、Encodingオブジェクト、たとえば、タグなしまたは web データを不適切なタグまたはときに、ビジネスに格納されるランダムなテキスト ファイルではありませんでした国際的な懸念事項やその他のデータがあります。You should use the BOM, because it provides nearly certain identification of an encoding for files that otherwise have lost reference to the Encoding object, for example, untagged or improperly tagged web data or random text files stored when a business did not have international concerns or other data. データが一貫して適切にタグ付け、可能であれば utf-8 または utf-16 とは、多くの場合、ユーザーの問題を回避できる可能性があります。Often user problems might be avoided if data is consistently and properly tagged, preferably in UTF-8 or UTF-16.

エンコードの種類を提供する標準では、BOM は、少し冗長です。For standards that provide an encoding type, a BOM is somewhat redundant. ただし、server を正しくエンコード ヘッダーを送信するために使用できます。However, it can be used to help a server send the correct encoding header. または、そのできますフォールバックとして、エンコードを紛失するそれ以外の場合。Alternatively, it can be used as a fallback in case the encoding is otherwise lost.

BOM を使用するいくつかのデメリットがあります。There are some disadvantages to using a BOM. たとえば、BOM を使用するデータベース フィールドを制限する方法を知ることは困難なできます。For example, knowing how to limit the database fields that use a BOM can be difficult. ファイルの連結問題になる可能性も、たとえば、ファイルを結合するように、不要な文字データの途中で終了できるようにします。Concatenation of files can be a problem also, for example, when files are merged in such a way that an unnecessary character can end up in the middle of data. いくつかの短所にもかかわらずただし、部品表の使用が強くお勧めします。In spite of the few disadvantages, however, the use of a BOM is highly recommended.

バイト オーダーとバイト順マークの詳細については、Unicode 標準を参照してください、 Unicode ホーム ページします。For more information on byte order and the byte order mark, see The Unicode Standard at the Unicode home page.

注意事項

エンコードされたバイトが正しくデコードするためには、エンコード済みバイトのプリアンブルとプレフィックスにする必要があります。To ensure that the encoded bytes are decoded properly, you should prefix encoded bytes with a preamble. ただし、ほとんどのエンコーディングでは、preamble は提供されません。However, most encodings do not provide a preamble. エンコードされたバイトを正しくデコードは、する必要がありますを使用して、Unicode のエンコードは、 UTF8EncodingUnicodeEncoding、またはUTF32Encodingプリアンブルとします。To ensure that the encoded bytes are decoded properly, you should use a Unicode encoding, that is, UTF8Encoding, UnicodeEncoding, or UTF32Encoding, with a preamble.

適用対象