. NET Конфигурация основного приложения: укажите кодировку файла INI. - PullRequest
0 голосов
/ 19 июня 2020

Во время запуска моего приложения я считываю значения конфигурации из файла INI:

configBuilder.AddIniFile("appsettings.ini");

Однако кодировка appsettings.ini отличается от UTF-8 (Windows -1250 в моем случае). Таким образом, возникает проблема со всеми значениями конфигурации, содержащими диакритические знаки.

Есть ли способ указать кодировку файла конфигурации, чтобы все значения конфигурации читались правильно?

(В моем случае изменение кодировки appsettings.ini невозможно.)

1 Ответ

0 голосов
/ 24 июня 2020

Использование StreamReader может помочь, так как вы можете указать кодировку при чтении файла. Есть разные кодировки на выбор (UTF8, Unicode и т. Д. c.). . NET Пример приложения Core Console ниже:

using System;
using System.IO;
using System.Text;

namespace ConsoleDiacritic
{
    public class Program
    {
        static void Main(string[] args)
        {
            ReadFile();
        }

        private static void ReadFile()
        {
            string sourceFile = @"c:\\temp\\appsettings.ini";

            using (var filestream = new FileStream(sourceFile, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, useAsync: true))
            {
                using var streamReader = new StreamReader(filestream, Encoding.UTF8);
                string lines = streamReader.ReadToEnd();

                Console.WriteLine(lines);
            }
        }
    }
}
...