Как определить кодировку для корректной записи текста кириллицей в файл на хостинге?

Приложение asp.net core 5. Хостинг reg.ru, ОС Windows.

Создаю файл txt на хостинге и пишу в него текст. В тексте есть как латиница, так и кириллица:

public static void WriteFile(string str, string path, string nameFile, string typeFile, string newpath)
    {
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
        DirectoryInfo dirInfo = new DirectoryInfo(path);
        DirectoryInfo newFolder = dirInfo.Parent.CreateSubdirectory(newpath);
        if (!newFolder.Exists)
        {
            newFolder.Create();
        }

        string fullPath = String.Format(@"{0}\{1}.{2}", newFolder.FullName, nameFile, typeFile);
        // This text is added only once to the file.
        try
        {
            if (!File.Exists(fullPath))
            {
                using (StreamWriter writer = new StreamWriter(fullPath, false, Encoding.GetEncoding("Windows-1251")))
                {

                        writer.WriteLine(str);
                }
            }
            else
            {
                using (StreamWriter writer = new StreamWriter(fullPath, true, Encoding.GetEncoding("Windows-1251")))
                {
                        writer.WriteLine(str);
                }
            }
        }
        catch { }
    }

Латиница и цифры записываются норм, а вот все что кириллицей знаками вопроса - ??????. Какую кодировку следует указать для корректной записи текста кириллицей и латиницей?

Попробовал указать UTF8 - не помогло:

using (StreamWriter writer = new StreamWriter(fullPath, true, Encoding.UTF8))
                {
                   writer.WriteLine(str);
                }

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

Автор решения: aepot

Encoding.UTF8 при указании для StreamWriter - это UTF-8 с BOM. А надо "без BOM". Чтобы получилось, можно просто не указывать кодировку. По умолчанию используется именно UTF-8 без BOM, ну либо вот так new UTF8Encoding(false) вместо Encoding.UTF8. Используйте ее и при записи, и при чтении.

Еще вот пример, как верно раскодировать неверно раскодированное. И закопайте 1251 туда, где вы ее откопали. Эта кодировка давно устарела вместе с Windows XP.

→ Ссылка