You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 05:13:13