解决MVC中HttpStatusCodeResult通过StatusDescription返回中文乱码
2019-11-27 13:07:53  By: shinyuu

在 .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的留言板)

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


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+