C# 对JS编码/解码进行转换

 public static class Extension
    {
        #region [编码/解码统一转换]
        /// <summary>
        ///
        /// </summary>
        /// <param name="str"></param>
        /// <param name="isEscape">True为Encode;False为Decode</param>
        /// <returns></returns>
        public static string JSCodingString(this string str, bool isEscape = false)
        {
            if (isEscape)
                return Microsoft.JScript.GlobalObject.escape(str);
            else
                return Microsoft.JScript.GlobalObject.unescape(str);
        }

        /// <summary>
        /// js编码解码
        /// </summary>
        /// <param name="lsto"></param>
        /// <param name="isEscape"></param>
        public static void JSCodingEntityList<T>(this List<T> lsto, bool isEscape = false)
        {
            foreach (object o in lsto)
            {
                JSCodingEntity(o, isEscape);
            }
        }

        /// <summary>
        /// js编码解码
        /// </summary>
        /// <param name="o"></param>
        /// <param name="isEscape"></param>
        public static void JSCodingEntity<T>(this T o, bool isEscape = false)
        {
            object objValue;
            System.Reflection.PropertyInfo[] propertys = o.GetType().GetProperties();
            foreach (System.Reflection.PropertyInfo p in propertys)
            {
                if (p.PropertyType == typeof(System.String))
                {
                    objValue = p.GetValue(o, null);
                    if (objValue != null)
                    {
                        if (objValue.GetType() == typeof(System.String))
                        {
                            if (isEscape)
                                p.SetValue(o, Microsoft.JScript.GlobalObject.escape(objValue.ToString()), null);
                            else
                                p.SetValue(o, Microsoft.JScript.GlobalObject.unescape(objValue.ToString()), null);
                        }
                    }
                }
            }
        }

        /// <summary>
        /// js编码解码
        /// </summary>
        /// <param name="o"></param>
        /// <param name="isEscape"></param>
        public static void JSCodingTable(this DataSet o, bool isEscape = false)
        {
            foreach (DataTable t in o.Tables)
            {
                JSCodingEntity(t, isEscape);
            }
        }

        /// <summary>
        /// js编码解码
        /// </summary>
        /// <param name="o"></param>
        /// <param name="isEscape"></param>
        public static void JSCodingTable(this DataTable o, bool isEscape = false)
        {
            for (int j = 0; j < o.Columns.Count; j++)
            {
                if (o.Columns[j].DataType == typeof(System.String))
                {
                    for (int i = 0; i < o.Rows.Count; i++)
                    {
                        if (isEscape)
                            o.Rows[i][j] = Microsoft.JScript.GlobalObject.escape(o.Rows[i][j].ToString());
                        else
                            o.Rows[i][j] = Microsoft.JScript.GlobalObject.unescape(o.Rows[i][j].ToString());
                    }
                }
            }
        }
        #endregion

        #region [重构:将原有编码/解码采用独立的函数方式。]
        public static string ToJSEncodeString(this string str)
        {
            return Microsoft.JScript.GlobalObject.escape(str);
        }

        public static string ToJSDecodeString(this string str)
        {
            return Microsoft.JScript.GlobalObject.unescape(str);
        }

        public static void ToJSEncodeEntityList<T>(this List<T> lsto)
        {
            foreach (object o in lsto)
            {
                ToJSEncodeEntity(o);
            }
        }

        public static void ToJSDecodeEntityList<T>(this List<T> lsto)
        {
            foreach (object o in lsto)
            {
                ToJSDecodeEntity(o);
            }
        }

        public static void ToJSEncodeEntity<T>(this T o)
        {
            object objValue;
            System.Reflection.PropertyInfo[] propertys = o.GetType().GetProperties();
            foreach (System.Reflection.PropertyInfo p in propertys)
            {
                if (p.PropertyType == typeof(System.String))
                {
                    objValue = p.GetValue(o, null);
                    if (objValue != null)
                    {
                        if (objValue.GetType() == typeof(System.String))
                        {
                            p.SetValue(o, Microsoft.JScript.GlobalObject.escape(objValue.ToString()), null);
                        }
                    }
                }
            }
        }

        public static void ToJSDecodeEntity<T>(this T o)
        {
            object objValue;
            System.Reflection.PropertyInfo[] propertys = o.GetType().GetProperties();
            foreach (System.Reflection.PropertyInfo p in propertys)
            {
                if (p.PropertyType == typeof(System.String))
                {
                    objValue = p.GetValue(o, null);
                    if (objValue != null)
                    {
                        if (objValue.GetType() == typeof(System.String))
                        {
                            p.SetValue(o, Microsoft.JScript.GlobalObject.unescape(objValue.ToString()), null);
                        }
                    }
                }
            }
        }

        public static void ToJSEncodeTable(this DataSet o)
        {
            foreach (DataTable t in o.Tables)
            {
                ToJSEncodeTable(t);
            }
        }

        public static void ToJSDecodeTable(this DataSet o)
        {
            foreach (DataTable t in o.Tables)
            {
                ToJSDecodeTable(t);
            }
        }

        public static void ToJSEncodeTable(this DataTable o)
        {
            for (int j = 0; j < o.Columns.Count; j++)
            {
                if (o.Columns[j].DataType == typeof(System.String))
                {
                    for (int i = 0; i < o.Rows.Count; i++)
                    {
                        o.Rows[i][j] = Microsoft.JScript.GlobalObject.escape(o.Rows[i][j].ToString());
                    }
                }
            }
        }

        public static void ToJSDecodeTable(this DataTable o)
        {
            for (int j = 0; j < o.Columns.Count; j++)
            {
                if (o.Columns[j].DataType == typeof(System.String))
                {
                    for (int i = 0; i < o.Rows.Count; i++)
                    {
                        o.Rows[i][j] = Microsoft.JScript.GlobalObject.unescape(o.Rows[i][j].ToString());
                    }
                }
            }
        }

        #endregion
    }

  

C# 对JS编码/解码进行转换,布布扣,bubuko.com

时间: 2024-11-10 07:03:40

C# 对JS编码/解码进行转换的相关文章

JS编码解码详解

今天在整理 js编码解码方法时,在网上搜资料,发现一篇文章讲的不错,讲解的非常简单明了,于是乎就想转载过来,却发现无法转载到博客园,最后只能卑鄙的摘抄过来.js编码解码就是将一些对URL和数据库敏感的在使用时容易被过滤掉,或者容易对数据库造成注入威胁的字符串进行编码,在使用时再进行解码,原理很简单用法也很简单,正好下面这篇文章讲解的非常明了利索.原文地址是http://blog.csdn.net/wwwchenbing/article/details/3409183,希望作者不要告我侵权. 1.

js编码 解码 -----转

js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 下面简单介绍一下它们的区别 1 escape()函数 定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string) 参数  描述  string  必需.要被转义或编码的字符串. 返回值 已编码的 string 的副本.其中某些字符

Unicode编码解码在线转换工具

Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式(The Unicode Standard,目前第五版由Addison-Wesley Professional出版,ISBN-10: 0321480910)对外发表. 2006年7月的最新版本的 Unicode 是5.0版本. 2005年3月31日推出的Unicode 4.1.0 .另外,5.0 Beta于2005年12月12日推出,5.2版本(unicode standard)

JS编码,解码. asp.net(C#)对应解码,编码

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z 1. JS: escape : js使用数据时可以使用escape 例如:搜藏中history纪录. 0-255以外的unicode值进行编码时输出%u**

JS编码解码

一.定义和用法 encodeURI() 函数可把字符串作为 URI 进行编码. 语法 encodeURI(URIstring) 参数 描述 URIstring 必需.一个字符串,含有 URI 或其他要编码的文本. 返回值 URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换. 说明 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) . 该方法的目的是对 URI 进行完整的编码,因此对以下在 URI

JS编码解码 (转)

定义和用法 encodeURIComponent() 函数可把字符串作为 URI 组件进行编码. 语法 encodeURIComponent(URIstring) 参数 描述 URIstring 必需.一个字符串,含有 URI 组件或其他要编码的文本. 返回值 URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换. 说明 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) . 其他字符(比如 :;/?

js前端、Java后台编码解码

由于信息在网络上传输的安全性以及中文传输问题,我们需要解决js前端对信息进行编码解码工作,同样需要在Java后天对js编码解码的结果进行反操作-解码编码. JS前端编码  ---> JAVA解码,如下: PS:当传递的某个参数值为一个链接(如:http://baidu.com?name=小许)时,需要对这个url作为一个参数进行编码,这时需要用到encodeURIComponent 这个函数 encodeURIComponent(url),这种编码情况下在后台的解码方式和encodeURI对应的

Java后台URL转码-Js编码和Java后台解码

方法一 String message = java.net.URLEncoder.encode("[西北局信息中心]采油气接口异常", "utf-8"); 前台传的如果是汉字的话,后台就用URLDecoder解码 1.java.将resultMsg 转为utf-8 (1) resultMsg = URLEncoder.encode(resultMsg, "utf-8"); (2) new String(request.getParameter(&

javascript中可用的编码解码函数

在项目实践中可能会遇到一些特殊字符的转义问题,那么这个时候就需要js编码解码函数来解决这些情况了: 特殊字符的含义 URL编码  符号 解释 转义 # 用来标志特定的文档位置 %23 % 对特殊字符进行编码 %25 & 分隔不同的变量值对 %26 + 在变量值中表示空格 %2B / 表示目录路径 %2F \ 表示目录路径 %5C = 用来连接键和值 %3D ? 表示查询字符串的开始 %3F 空格 空格 %20 . 句号 %2E : 冒号 %3A javascript中可用的编码解码函数,有如下的