在 ASP.NET Core 中写入响应时,非 ASCII 字符被打乱
Non-ASCII characters scrambled when writing response in ASP.NET Core
如果我将此 Startup 放入 ASP.NET 核心应用程序中,文本将被打乱 (ÅÄÖ)。如果我在中间件中这样做,也会发生同样的事情。将 Encoding.UTF8
传递给 WriteAsync
没有帮助。
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.Run(async context => { await context.Response.WriteAsync("ÅÄÖ"); });
}
}
出了什么问题,我该如何解决?
您需要提供适当的 Content-Type
header。没有它,浏览器只能猜测内容响应代表什么,以及采用哪种编码。当然,如果猜测不正确也没有错,就像你的情况一样。
app.Run(async context => {
// text in UTF-8
context.Response.ContentType = "text/plain; charset=utf-8";
await context.Response.WriteAsync("ÅÄÖ");
});
如果我将此 Startup 放入 ASP.NET 核心应用程序中,文本将被打乱 (ÅÄÖ)。如果我在中间件中这样做,也会发生同样的事情。将 Encoding.UTF8
传递给 WriteAsync
没有帮助。
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.Run(async context => { await context.Response.WriteAsync("ÅÄÖ"); });
}
}
出了什么问题,我该如何解决?
您需要提供适当的 Content-Type
header。没有它,浏览器只能猜测内容响应代表什么,以及采用哪种编码。当然,如果猜测不正确也没有错,就像你的情况一样。
app.Run(async context => {
// text in UTF-8
context.Response.ContentType = "text/plain; charset=utf-8";
await context.Response.WriteAsync("ÅÄÖ");
});