码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2016-12-24 23:28:39      阅读:1514      评论:0      收藏:0      [点我收藏+]

标签:中文乱码   mvc   httpstatuscoderesult   


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编码


附c#转码代码:

         /// <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;
        }


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

标签:中文乱码   mvc   httpstatuscoderesult   

原文地址:http://yp2gt.blog.51cto.com/964130/1885733

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!