UnicodeEncoding.Preamble プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このオブジェクトが UTF-16 形式でエンコードされた 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 バイトオーダーマークを含むバイトスパン。それ以外の場合は、既定のスパン。
注釈
このオブジェクトは UnicodeEncoding プリアンブルを提供できます。これは、エンコード プロセスによって生成されるバイトシーケンスの前に付加できるバイトスパンです。 バイト オーダー マーク (コード ポイント U+FEFF
) を使用してエンコードされたバイトのシーケンスを事前に作成すると、デコーダーがバイトオーダーと変換形式または UTF を決定するのに役立ちます。 Unicode バイト順マーク (BOM) は、次のようにシリアル化されます (16 進数)。
ビッグ エンディアンバイトオーダー:
FE FF
リトル エンディアンバイトオーダー:
FF FE
有効な UnicodeEncoding BOM を持つ Preamble オブジェクトは、次の方法でインスタンス化できます。
or Encoding.BigEndianUnicode プロパティによって返されるオブジェクトをEncoding.Unicode取得UnicodeEncodingします。
パラメーターなしの UnicodeEncoding() コンストラクターを呼び出してオブジェクトを UnicodeEncoding インスタンス化します。
引数の
true``byteOrderMark
値として、またはUnicodeEncoding(Boolean, Boolean, Boolean)コンストラクターにUnicodeEncoding(Boolean, Boolean)指定します。
BOM を使用することをお勧めします。これは、タグ付けされていない、不適切にタグ付けされた Web データ、または企業が国際的な懸念を抱いていないときに保存されたランダム テキスト ファイルなど、エンコードへの参照を失ったファイルのエンコードのほぼ一定の識別を提供するためです。 多くの場合、データが一貫して適切にタグ付けされている場合は、ユーザーの問題が回避される可能性があります。
エンコードの種類を提供する標準の場合、BOM はやや冗長です。 ただし、このメソッドを使用して、サーバーが正しいエンコードヘッダーを送信できるようにすることができます。 または、エンコードが失われた場合にフォールバックとして使用することもできます。
BOM の使用にはいくつかの欠点があります。 たとえば、BOM を使用するデータベースフィールドを制限する方法を理解することは困難です。 ファイルの連結も問題になることがあります。たとえば、不要な文字がデータの途中で終了するような方法でファイルをマージする場合などです。 ただし、いくつかの欠点がありますが、BOM を使用することを強くお勧めします。
重要
エンコードされたバイトが正しくデコードされるようにするには、エンコードされたバイトのストリームの先頭にプリアンブルを付ける必要があります。 この GetBytes メソッドでは、エンコードされたバイトのシーケンスに BOM を付加しません。適切なバイト ストリームの先頭に BOM を指定するのは開発者の責任です。