首页 > 解决方案 > .NET Core 应用配置:指定 INI 文件编码

问题描述

在我的应用程序启动期间,我从 INI 文件中读取配置值:

configBuilder.AddIniFile("appsettings.ini");

但是,编码appsettings.ini不同于 UTF-8(在我的例子中是 Windows-1250)。因此,所有包含变音符号的配置值都存在问题。

有没有办法指定配置文件的编码以便正确读取所有配置值?

(在我的情况下,更改编码appsettings.ini是不可能的。)

标签: .net.net-coreconfigurationconfiguration-files

解决方案


这对我有用

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();

推荐阅读