私の答えは、必要な情報がすべて含まれている HelloSam のものに基づいています。OPが求めているのは、BOMがファイルに確実に出力されるようにする方法だと私だけが信じています。
したがって、false を UTF8Encoding ctor に渡す代わりに、true を渡す必要があります。
using (var sw = new StreamWriter("text.txt", new UTF8Encoding(true)))
以下のコードを試して、結果のファイルを 16 進エディターで開き、BOM を含むファイルと含まないファイルを確認してください。
class Program
{
static void Main(string[] args)
{
const string nobomtxt = "nobom.txt";
File.Delete(nobomtxt);
using (Stream stream = File.OpenWrite(nobomtxt))
using (var writer = new StreamWriter(stream, new UTF8Encoding(false)))
{
writer.WriteLine("HelloПривет");
}
const string bomtxt = "bom.txt";
File.Delete(bomtxt);
using (Stream stream = File.OpenWrite(bomtxt))
using (var writer = new StreamWriter(stream, new UTF8Encoding(true)))
{
writer.WriteLine("HelloПривет");
}
}