英語で読む

次の方法で共有


Encoding.GetPreamble メソッド

定義

派生クラスでオーバーライドされた場合、使用するエンコーディングを指定するバイト シーケンスを返します。

C#
public virtual byte[] GetPreamble();

戻り値

Byte[]

使用するエンコーディングを指定するバイト シーケンスを格納するバイト配列。

- または -

プリアンブルが不要な場合は、長さ 0 のバイト配列。

次の例では、プリアンブルに基づくエンコードのバイト順を決定します。

C#
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 contain a 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.

*/

注釈

オブジェクトは、必要に応じて、エンコードプロセスによって Encoding 生成されるバイトシーケンスにプレフィックスを付けることができる、バイト配列であるプリアンブルを提供します。 プリアンブルにバイト順マーク (Unicode、コードポイント U + FEFF) が含まれている場合は、デコーダーがバイト順と変換形式または UTF を決定するのに役立ちます。

Unicode バイト順マーク (BOM) は、次のようにシリアル化されます (16 進数)。

  • UTF-8: EF BB BF

  • UTF-16 ビッグエンディアンバイト順: FE FF

  • UTF-16 リトルエンディアンバイト順: FF FE

  • 32 UTF-8 ビッグエンディアンバイト順:00 00 FE FF

  • 32 UTF-8 リトルエンディアンバイト順: FF FE 00 00

BOM を使用する必要があります。これは、他の方法でオブジェクトへの参照が失われたファイル ( Encoding タグなしまたは不適切なタグ付けされた web データ、またはビジネスに国際的な懸念やその他のデータがない場合に保存されるランダムなテキストファイルなど) について、ほとんど特定のエンコーディングを提供するためです データが一貫して適切にタグ付けされている場合 (UTF-8 または UTF-16 の場合)、ユーザーの問題が回避されることがよくあります。

エンコードの種類を提供する標準の場合、BOM はやや冗長です。 ただし、このメソッドを使用して、サーバーが正しいエンコードヘッダーを送信できるようにすることができます。 または、エンコードが失われた場合にフォールバックとして使用することもできます。

BOM の使用にはいくつかの欠点があります。 たとえば、BOM を使用するデータベースフィールドを制限する方法を理解することは困難です。 ファイルの連結も問題になることがあります。たとえば、不要な文字がデータの途中で終了するような方法でファイルをマージする場合などです。 ただし、いくつかの欠点がありますが、BOM を使用することを強くお勧めします。

バイト順とバイト順マークの詳細については、unicodeホームページの unicode 標準を参照してください。

注意事項

エンコードされたバイトが正しくデコードされるようにするには、エンコードされたバイトをプリアンブルでプレフィックスとして付ける必要があります。 ただし、ほとんどのエンコーディングではプリアンブルが提供されません。 エンコードされたバイトが正しくデコードされるようにするには、Unicode エンコーディング (、、、または) をプリアンブルで使用する必要があり UTF8EncodingUnicodeEncodingUTF32Encoding ます。

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0