UTF8Encoding.Preamble プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このオブジェクトが UTF-8 形式でエンコードされた Unicode バイト順マークを提供するように構成されている場合は、そのようなマークを取得します。
public:
virtual property ReadOnlySpan<System::Byte> Preamble { ReadOnlySpan<System::Byte> get(); };
public override ReadOnlySpan<byte> Preamble { get; }
member this.Preamble : ReadOnlySpan<byte>
Public Overrides ReadOnly Property Preamble As ReadOnlySpan(Of Byte)
プロパティ値
このオブジェクトが 1 つを指定するように構成されている場合は、Unicode バイトオーダーマークを含むバイトスパン。それ以外の場合は、既定のスパン。
注釈
このオブジェクトは UTF8Encoding プリアンブルを提供できます。これは、エンコード プロセスの結果として発生するバイトシーケンスの先頭に付けることができるバイトのスパンです。 バイト オーダー マーク (コード ポイント U+FEFF
) を使用してエンコードされたバイトのシーケンスを事前に作成すると、デコーダーがバイトオーダーと変換形式 (UTF) を決定するのに役立ちます。 Unicode バイトオーダー マーク (BOM) は、0xEF 0xBB 0xBFとしてシリアル化されます。 Unicode 標準では、UTF-8 でエンコードされたストリームに BOM を使用する必要も推奨もしません。
有効な UTF8Encoding BOM を持つ Preamble
オブジェクトは、次の方法でインスタンス化できます。
プロパティによって返されるオブジェクトを UTF8Encoding 取得します Encoding.UTF8 。
パラメーターを使用してコンストラクターをUTF8Encoding
encoderShouldEmitUTF8Identifier
呼び出し、その値true
を .
その他 UTF8Encoding のすべてのオブジェクトは、有効な BOM ではなく既定のスパンを返すように構成されます。
BOM は、タグなしまたは不適切にタグ付けされた Web データや、企業が国際的な懸念を抱いていないときに格納されたランダムなテキスト ファイルなど、エンコードへの参照を失ったファイルのエンコードのほぼ特定の識別を提供します。 多くの場合、データが一貫して適切にタグ付けされている場合は、ユーザーの問題が回避される可能性があります。
エンコードの種類を提供する標準の場合、BOM はやや冗長です。 ただし、このメソッドを使用して、サーバーが正しいエンコードヘッダーを送信できるようにすることができます。 または、エンコードが失われた場合にフォールバックとして使用することもできます。
BOM の使用にはいくつかの欠点があります。 たとえば、BOM を使用するデータベースフィールドを制限する方法を理解することは困難です。 ファイルの連結も問題になることがあります。たとえば、不要な文字がデータの途中で終了するような方法でファイルをマージする場合などです。 ただし、いくつかの欠点がありますが、BOM を使用することを強くお勧めします。
バイト順とバイト順マークの詳細については、unicodeホームページの unicode 標準を参照してください。
重要
エンコードされたバイトがファイルまたはストリームとして保存されるときに正しくデコードされるようにするには、エンコードされたバイトのストリームの先頭にプリアンブルを付けます。 この GetBytes メソッドでは、エンコードされたバイトのシーケンスに BOM を付加しません。適切なバイト ストリームの先頭に BOM を指定するのは開発者の責任です。