Почему в 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 символах?