溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解決MVC 中httpstatuscoderesult 通過StatusDescription 返回中文亂碼

發(fā)布時間:2020-07-13 05:45:39 來源:網絡 閱讀:12077 作者:ikiki 欄目:開發(fā)技術


c#中httpstatuscoderesult語法如下:

public HttpStatusCodeResult(
	HttpStatusCode statusCode,
	string statusDescription
)

在Action中通過

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

在前端返回的是亂碼。


原因:

根據(jù) http 協(xié)議,StatusDescription 是寫在 http header 中的,默認所有header是用iso-8859-1編碼的,但是中文實際是用uft8編碼。所以就出現(xiàn)了亂碼問題。


解決:

使用轉碼把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;
        }


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI