Character encoding 更改响应头编码.Net核心

Character encoding 更改响应头编码.Net核心,character-encoding,http-headers,.net-core,Character Encoding,Http Headers,.net Core,我需要更改.Net Core 1.1上响应头的编码的帮助 我们正在开发一个应用程序,我们创建了一个名为“X-application-Error”的自定义头,其中在应用程序后端发生的任何错误都返回一个响应代码500,并且在头中返回消息。通过这种方式,我使用“app.UseExceptionHandler”捕获错误,将其放在标题中,前端(如果接收到响应代码500)将显示在标题处发送的消息 正如预期的那样,我遇到的问题是,我需要发送诸如“é”、“ã”等字符,而头的默认编码是UTF-8,因此它不显示这些

我需要更改.Net Core 1.1上响应头的编码的帮助

我们正在开发一个应用程序,我们创建了一个名为“X-application-Error”的自定义头,其中在应用程序后端发生的任何错误都返回一个响应代码500,并且在头中返回消息。通过这种方式,我使用“app.UseExceptionHandler”捕获错误,将其放在标题中,前端(如果接收到响应代码500)将显示在标题处发送的消息

正如预期的那样,我遇到的问题是,我需要发送诸如“é”、“ã”等字符,而头的默认编码是UTF-8,因此它不显示这些字符

在.net framework中,我们可以使用“HttpResponse.HeaderEncoding”属性来更改它() 但是我找不到与.Net内核(1.1)相同的版本


我在这里发现了一个类似的问题(),但也没有答案。

好的,我找到了一个解决方法(是的,现在对我来说似乎很明显)

据我所知,如果未进行编码,则.Net核心不允许在标题中包含“á”、“ã”等字符。所以我只使用了“WebUtility.UrlEncode(string)”并将消息编码发送出去。在前端,Angular自动解码了信息。代码如下:

app.UseExceptionHandler(
          builder =>
          {
              builder.Run(
                async context =>
                {
 //Some validations I make

                    context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;

                    var error = context.Features.Get<IExceptionHandlerFeature>();
                    if (error != null)
                    {
                        try
                        {
                            context.Response.Headers.Add("Application-Error", WebUtility.UrlEncode(error.Error.Message));
                        }catch(Exception e)
                        {
                            context.Response.Headers.Add("Application-Error", e.Message);
                        }

                        //the rest of the code
                    }
                });
          });
app.UseExceptionHandler(
生成器=>
{
建设者,快跑(
异步上下文=>
{
//我做了一些验证
context.Response.StatusCode=(int)HttpStatusCode.InternalServerError;
var error=context.Features.Get();
if(错误!=null)
{
尝试
{
Add(“应用程序错误”,WebUtility.UrlEncode(Error.Error.Message));
}捕获(例外e)
{
context.Response.Headers.Add(“应用程序错误”,e.Message);
}
//代码的其余部分
}
});
});

这些字符在UTF-8代码表中。