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)

プロパティ値

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

注釈

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

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

  • UTF-8: EF BB BF

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

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

  • UTF-32 ビッグ エンディアン バイトオーダー: 00 00 FE FF

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

BOM を使用する必要があります。これは、タグなしまたは不適切にタグ付けされた Web データや、企業が国際的な懸念やその他のデータを持っていないときに格納されたランダムテキスト ファイルなど、 Encoding オブジェクトへの参照を失ったファイルのエンコードのほぼ一定の識別を提供するためです。 多くの場合、UTF-8 または UTF-16 でデータが一貫して適切にタグ付けされている場合は、ユーザーの問題を回避できます。

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

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

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

Caution

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

適用対象