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 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。