我有一个小型的.NET Core控制台应用程序,该应用程序有一个appsettings.json
文件,其中包含不同的配置节,并且其中一些值包含重音符号(例如á
或ó
)。
当我解析给定的配置节时,我会得到那些奇怪的字符。
配置名称空间中是否有一个选项可以帮助正确解析字符串?
实际示例:
{
"Loc": "https://www.mywebsite.com/image.jpg",
"Caption": "Ocasión - Los mejores vehículos"
},
答案 0 :(得分:3)
JSON强制使用UTF-8作为文件编码。您的文件很可能以其他编码方式保存,可能是Codepage1252。请确保将文件另存为UTF-8,并且字符可以正常工作。
不同的工具对此处理方式不同。
对于记事本,在“保存”对话框中有一个“编码” 选择:
Web Bluetooth API specification
Visual Studio在“保存”对话框中有一个“使用编码保存” 选项:
您还可以编写一个小程序或脚本来进行转换,例如以下PowerShell管道:
(Get-Content appsettings.json) | Set-Content -Encoding Utf8 appsettings.json
答案 1 :(得分:0)
受Deep Dive into Microsoft Configuration的启发,我找到了解决方案。我的解决方案是结合使用json和xml。
在Program.cs中,您需要添加xml的负载。我将设置映射到POCO的示例:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(AddDbConfiguration)
.UseStartup<Startup>();
private static void AddDbConfiguration(WebHostBuilderContext context, IConfigurationBuilder builder)
{
var configuration = builder.Build();
builder.AddXmlFile("appsettings.xml");
}
我的xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<ConfigSettings>
<Database>Specialskolekørsel</Database>
<SystemId>1</SystemId>
<EnableAudit>True</EnableAudit>
</ConfigSettings>
</root>
我的ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.Configure<ConfigSettings>(Configuration.GetSection(nameof(ConfigSettings)));
}
我的控制器:
public HomeController(IOptions<ConfigSettings> config)
{
Database = config.Value.Database;
}
现在,丹麦字母ø如预期显示。希望您会觉得有用。