Encoding.Preamble プロパティ

定義

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

public:
 virtual property ReadOnlySpan<System::Byte> Preamble { ReadOnlySpan<System::Byte> get(); };
public virtual ReadOnlySpan<byte> Preamble { get; }
member this.Preamble : ReadOnlySpan<byte>
Public Overridable ReadOnly Property Preamble As ReadOnlySpan(Of Byte)

プロパティ値

使用するエンコードを指定するバイト シーケンスを含むバイト スパン、または長さがゼロのスパン (プリアンブルが不要な場合)。

注釈

必要に応じて、オブジェクトは、エンコードプロセスによって 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 ます。

適用対象