やり方
encoderShouldEmitUTF8Identifier
をfalse
に指定したUTF8Encoding
を利用します。
learn.microsoft.com
// BOM付きUTF-8で書き出す File.WriteAllText(path, "Hello, World", Encoding.UTF8); // ef, bb, bf がUTF-8のBOM // ef, bb, bf, 48, 65, 6c, 6c, 6f, 2c, 20, 57, 6f, 72, 6c, 64 Console.WriteLine(string.Join(", ", File.ReadAllBytes(path).Select(x => x.ToString("x")))); // BOM無しUTF-8でテキストを書き出す File.WriteAllText(path, "Hello, World", new UTF8Encoding(false)); // 48, 65, 6c, 6c, 6f, 2c, 20, 57, 6f, 72, 6c, 64 Console.WriteLine(string.Join(", ", File.ReadAllBytes(path).Select(x => x.ToString("x")))); // UTF8EncodingのデフォルトはBOM無し File.WriteAllText(path, "Hello, World", new UTF8Encoding()); // 48, 65, 6c, 6c, 6f, 2c, 20, 57, 6f, 72, 6c, 64 Console.WriteLine(string.Join(", ", File.ReadAllBytes(path).Select(x => x.ToString("x"))));
補足としてですが、Encoding.UTF8
を利用した場合はBOM付きになってます。