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编码/解码进行转换的更多相关文章

  1. Unicode编码解码在线转换工具

    // Unicode编码解码在线转换工具 Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式(The Unicode Standar ...

  2. JS编码解码详解

    今天在整理 js编码解码方法时,在网上搜资料,发现一篇文章讲的不错,讲解的非常简单明了,于是乎就想转载过来,却发现无法转载到博客园,最后只能卑鄙的摘抄过来.js编码解码就是将一些对URL和数据库敏感的 ...

  3. ajax请求参数中含有特殊字符"#"的问题 (另附上js编码解码的几种方法)

    使用ajax向后台提交的时候 由于参数中含有#  默认会被截断 只保留#之前的字符  json格式的字符串则不会被请求到后台的action 可以使用encodeURIComponent在前台进行编码, ...

  4. 【转】JS编码解码、C#编码解码

    GB2312,指的是中文 UTF8,指的是国标,包含中文.英文. 但是通过JQuery.ajax的Get.Post,如果直接传递中文或者特殊字符的特使字符的时候,这个时候就会出现乱码现象. JS编码 ...

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

    escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@ ...

  6. JS编码解码

    一.定义和用法 encodeURI() 函数可把字符串作为 URI 进行编码. 语法 encodeURI(URIstring) 参数 描述 URIstring 必需.一个字符串,含有 URI 或其他要 ...

  7. php与js 编码解码交互

    javascript: var  fontcolorEncode=encodeURIComponent(fontcolor.value);  //编码 php: $fontcolordecode= u ...

  8. js编码解码 punyCode

    ;(function(w) { var PunycodeModule = function () { function IdnMapping() { this.utf16 = { decode: fu ...

  9. Js编码和Java后台解码

    1.java.将resultMsg 转为utf-8 (1) resultMsg = URLEncoder.encode(resultMsg, "utf-8"); (2) new S ...

随机推荐

  1. SGU 190.Dominoes(二分图匹配)

    时间限制:0.25s 空间限制:4M 题意: 给定一个N*N的棋盘,一些格子被移除,在棋盘上放置一些1*2的骨牌,判定能否放满,并且输出任意方案. Solution: 首先考虑对棋盘的一个格子黑白染色 ...

  2. javascript——事件处理

    <script type="text/javascript"> function EventUtil() { var _self = this; ///添加事件 var ...

  3. 泛型? extents super

    ?可以接受任何泛型集合,但是不能编辑集合值.所以一般只在方法参数中用 例子: ? extends Number  则类型只能是Number类的子孙类 ? super String  则类型只能是Str ...

  4. 固定DIV样式

      <!doctype html>   <html>   <head>   <meta charset="UTF-8">   < ...

  5. PHP时间戳和日期相互转换

    在php中我们要把时间戳转换日期可以直接使用date函数来实现,如果要把日期转换成时间戳可以使用strtotime()函数实现,下面我来给大家举例说明. 1.php中时间转换函数 strtotime ...

  6. YII 小部件实现的注册表

    今天来进行用户注册功能yii集成了很多验证框架,framework/validators下面,这个文件夹的最后一个文件CValidator.php 是总的验证信息,根据请求参数决定需要那种验证 如:u ...

  7. A Good Beginning Helps To Make A Good End

    Hello Guys, It seems nothing would be not good after posting this blog link in my MS application. Se ...

  8. Objective-C基础 便利构造器 单例模式1-17

    Objective-C基础 便利构造器 单例模式1-17 便利构造器 单例模式 1.在声明时指定setter或getter方法,则用点运算符方法调用时默认调用的就是自己指定的方法2.单例:唯一性,如: ...

  9. 弄懂css中单位px和em,rem的区别

              国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢?         PX特点 1. IE无法调整那些使用px作为单位的字体大小 ...

  10. 舍伍德(Sherwood)算法学习笔记

    一.概念引入 设A是一个确定性算法,当它的输入实例为x时所需的计算时间记为tA(x).设Xn是算法A的输入规模为n的实例的全体,则当问题的输入规模为n时,算法A所需的平均时间为.这显然不能排除存在x∈ ...