0

UTF8Encodingを使用して、Unicode バイト オーダー マークを提供しないインスタンスを作成できることはわかっていますUTF8Encoding(false)。しかし、UTF8Encodingインスタンスへの参照を取得する別の方法も見つけましたEncoding.UTF8。問題は、静的Encoding.UTF8インスタンスの提供 BOM プロパティを false に設定できるか、それとも常に BOM を提供するかということです。

4

1 に答える 1

2

Encoding.UTF8は、静的なデフォルトのインスタンスを返します。これには、常にBOMが含まれます。

    [__DynamicallyInvokable]
    public static Encoding UTF8
    {
      [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries"), __DynamicallyInvokable] get
      {
        if (Encoding.utf8Encoding == null)
          Encoding.utf8Encoding = (Encoding) new UTF8Encoding(true);
        return Encoding.utf8Encoding;
      }
    }

フラグはプライベートブールフィールドに格納されていることに注意してください。これは、リフレクションを介してfalseに設定できる可能性がありますが、いくつかの理由からお勧めできません。

于 2013-03-18T15:28:57.540 に答える