首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于URL编码的有关问题

2012-03-09 
关于URL编码的问题这个是请求http://xxx.com/xxx.aspx?name1:李三&classclass2这个请求有UTF-8,也有gb23

关于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;        } 

热点排行