Search code examples
.net.net-coreconfigurationconfiguration-files

.NET Core app configuration: Specify INI file encoding


During startup of my app, I read configuration values from INI file:

configBuilder.AddIniFile("appsettings.ini");

However, encoding of appsettings.ini is different from UTF-8 (Windows-1250 in my case). Thus, there is a problem with all configuration values that contain diacritics.

Is there a way how to specify encoding of configuration file so that all configuration values are read properly?

(Changing encoding of appsettings.ini is not possible in my case.)


Solution

  • Here is what works for me

    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    var configText = File.ReadAllText("config2.ini", Encoding.GetEncoding("windows-1250"));
    var ms = new MemoryStream();
    ms.Write(Encoding.Default.GetBytes(configText));
    ms.Position = 0;
    
    IConfiguration config = new ConfigurationBuilder()
                  .AddIniStream(ms)
                  .Build();
    
    ms.Dispose();