当前位置: 代码迷 >> ASP.NET >> 关于URL编码的有关问题
  详细解决方案

关于URL编码的有关问题

热度:6459   发布时间:2013-02-25 00:00:00.0
关于URL编码的问题
这个是请求
http://xxx.com/xxx.aspx?name=1:李三&class=class2

这个请求有UTF-8,也有gb2312的。

我接受的时候,要转码,但是我不知道发过来的是什么编码。

问:怎么判断请求URL的编码

------解决方案--------------------------------------------------------
C# code
/// <summary>        /// 返回解码后的字符串        /// </summary>        /// <param name="key">传参的参数名</param>        /// <returns></returns>        public static string UrlDecode(string key)        {            string input = GetUrlParam(key).ToLower();            if (input.Length == 0)                return string.Empty;            //首先用utf-8进行解码            string result = HttpUtility.UrlDecode(input, Encoding.UTF8);            // 将已经解码的字符再次进行编码.                        string encode = HttpUtility.UrlEncode(result, Encoding.UTF8).ToLower();            //与原来编码进行对比,如果不一致说明解码未正确,用gb2312进行解码            if (input != encode)                result = HttpUtility.UrlDecode(input, Encoding.GetEncoding("gb2312"));            return result;        }        private static string GetUrlParam(string key)        {            if (System.Web.HttpContext.Current != null)            {                string query = HttpContext.Current.Request.Url.Query;                if (query != null && query.Length > 0)                {                    int index = 0;                    index = query.IndexOf(key + "=");                    if (index >= 0)                    {                        query = query.Substring(key.Length + 1 + index);                        index = query.IndexOf('&');                        if (index >= 0)                            query = query.Substring(0, index);                        return query;                    }                }            }            return string.Empty;        }
  相关解决方案