.NET Core Web API中Swagger UI编码异常问题求助
解决.NET Core API中Swagger文档编码异常的问题
Swagger文档出现编码异常(特殊字符如葡萄牙语重音字符显示乱码),核心原因是Swagger输出的JSON响应未明确指定UTF-8编码,或项目/序列化配置未适配非ASCII字符。以下是具体解决步骤:
强制Swagger响应使用UTF-8编码
在注册Swagger中间件前,添加自定义中间件设置响应头的Content-Type为UTF-8,确保浏览器正确解析字符:// 在app.UseSwagger()之前添加 app.Use(async (context, next) => { context.Response.Headers.ContentType = "application/json; charset=utf-8"; await next(); }); app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint($"/swagger/{swaggerVersion}/swagger.json", $"Validação de telefones {swaggerVersion}"); });配置项目文件编码为UTF-8
打开项目的.csproj文件,添加编码配置,避免代码中定义的字符串因文件编码问题出现乱码:<PropertyGroup> <FileEncoding>utf-8</FileEncoding> </PropertyGroup>调整JSON序列化规则
配置控制器的JSON序列化选项,关闭非ASCII字符的转义,让Swagger直接输出UTF-8字符:builder.Services.AddControllers() .AddJsonOptions(options => { options.JsonSerializerOptions.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping; });
以上步骤可单独或组合使用,优先尝试前两步,基本能解决大部分编码乱码问题。
内容的提问来源于stack exchange,提问作者Carlos Siestrup
相关产品推荐
相关产品推荐

