UTF-8はBOMの有無があり時と場合によって適切に選択する必要があります。
// BOMあり Encoding bom = System.Text.Encoding.UTF8; // BOMなし Encoding withoutBom = System.Text.UTF8Encoding(false);
取得方法に対称性が無いのが気になるので Utility 化してみました。
// UTF8.cs using System.Text; public static class UTF8 { static UTF8Encoding? _utf8withoutBom; // UTF8エンコードを取得します。 // true: BOMあり / false: BOMなし public static Encoding GetEncoding(bool useBom) { return useBom ? Encoding.UTF8 : _utf8withoutBom ??= new UTF8Encoding(false); } } // ★使い方 - - - - - // BOMあり Encoding bom = UTF8.GetEncoding(true); // BOMなし Encoding withoutBom = UTF8.GetEncoding(false);