Почему в StreamWriter UTF-8 ведет себя по разному?

Возникло проблема с кодировками при записи в файл русского языка на C#. В чем суть: у меня есть строка с русскими и английскими символами закодированная в UTF8, я записываю ее в файл при двумя способами:

using (StreamWriter sw = new StreamWriter(path, false, Encoding.UTF8))
{
    await sw.WriteLineAsync(stringContent);
}

в этом случае все хорошо в файле есть и русские и английские символы, notepad++ определяет кодировку как UTF8 с BOM.

using (StreamWriter sw = File.CreateText(path))
{
    await sw.WriteLineAsync(stringContent);
}

В этом случае в файле есть английские символы и каша вместо русских, notepad++ определяет кодировку как UTF8 без BOM. При использовании File.CreateText() он возвращает StreamWriter с кодировкой UTF8. Вопрос: почему если я явно указываю кодировку UTF8 все работает, а если она используется по умолчанию, то русские символы превращаются в кашу? Проблема в BOM символах?


Ответы (0 шт):