如何自动判断Request.QueryString参数的编码格式

来源:互联网 发布:电话监控软件 编辑:程序博客网 时间:2024/05/16 01:46

 帖子地址:http://topic.csdn.net/u/20091105/15/0d54b7b2-38fe-4cdf-ae1b-5a1f07c26ea0.html?seed=1186869228&r=60954435#r_60954435

 

解决办法:

 

input 为 context.Request.ServerVariables["QUERY_STRING"]

 

        private static int GetInCount(string input, string fstring)
        {
            return input.Length - input.Replace(fstring, String.Empty).Length;
        }
        private static string UrlDecode(string input)
        {
            int _c = GetInCount(input, "%");
            if (_c > 1)
            {
                if (_c % 3 != 0)
                {
                    return System.Web.HttpUtility.UrlDecode(input, System.Text.Encoding.Default);
                }
                else
                {
                    if (_c > 3 && input.Length > input.IndexOf("%") + 9)
                    {
                        string ckst = input.Substring(input.IndexOf("%"), 9);
                        string ck = System.Web.HttpUtility.UrlDecode(ckst, System.Text.Encoding.UTF8);
                        if (ck.Length == 1)
                        {
                            return System.Web.HttpUtility.UrlDecode(input, System.Text.Encoding.UTF8);
                        }
                        else
                        {
                            return System.Web.HttpUtility.UrlDecode(input, System.Text.Encoding.Default);
                        }
                    }
                    else
                    {
                        return System.Web.HttpUtility.UrlDecode(input, System.Text.Encoding.UTF8);
                    }
                }
            }
            return input;
        }

 

 

原理:

GB2312 为 一个汉字2组编码

UTF8 为 一个汉字 为3组编码

 

我取 三组编码出来 使用 UTF8转 如果是 UTF8 格式的 应该是一个汉字,如果是GB2312 应该就是2个字了

 

SO ^_^ 解决

 

原创粉丝点击