欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

解决MVC中HttpStatusCodeResult通过StatusDescription返回中文乱码

程序员文章站 2022-01-21 19:01:50
...

在 .NET MVC中,有时候需要使用httpstatuscoderesult 返回状态描述,那么这个时候就有可能遇到乱码问题,除非你使用英文。其实也挺好解决的,解决MVC 中httpstatuscoderesult 通过StatusDescription 返回中文乱码。


c#中httpstatuscoderesult语法如下:

public HttpStatusCodeResult(
    HttpStatusCode statusCode,
    string statusDescription
)


在Action中通过

return new HttpStatusCodeResult(HttpStatusCode.BadRequest,"我是中文字符串")


在前端返回的是乱码,原因是根据 http 协议,StatusDescription 是写在 http header 中的,默认所有header是用iso-8859-1编码的,但是中文实际是用uft8编码。所以就出现了乱码问题。

解决方法是使用转码把UTF8编码转为iso-8859-1编码。

/// <summary>
/// 转换为ISO_8859_1
/// </summary>
/// <param name="srcText"></param>
/// <returns></returns>
private string StringToISO_8859_1(string srcText)
{
    string dst = "";
    char[] src = srcText.ToCharArray();
    for (int i = 0; i < src.Length; i  )
    {
        string str = @"&#"   (int)src[i]   ";";
        dst  = str;
    }
    return dst;
}

/// <summary>
/// 转换为原始字符串
/// </summary>
/// <param name="srcText"></param>
/// <returns></returns>
private string ISO_8859_1ToString(string srcText)
{
    string dst = "";
    string[] src = srcText.Split(´;´);
    for (int i = 0; i < src.Length; i  )
    {
        if (src[i].Length > 0)
        {
            string str = ((char)int.Parse(src[i].Substring(2))).ToString();
            dst  = str;
        }
    }
    return dst;
}


若资源对你有帮助,浏览后有很大收获,不妨小额打赏我一下,你的鼓励是维持我不断写博客最大动力。

想获取DD博客最新代码,你可以扫描下方的二维码,关注DD博客微信公众号(ddblogs)。

或者你也可以关注我的新浪微博,了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间,可以对该博文进行评论,希望不吝赐教。

为保证及时回复,可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问,祝你生活愉快、工作顺心、欢迎常来逛逛。