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. IBM服务器 IMM日志收集

    在IBM X系列服务器背板上有一个" SYS MGMT"接口,用网线将此接口与笔记本连接起来,然后将笔记本的 IP地址配置成 192.168.70.0/24 这个网段的地址,然后 ...

  2. SGU 194. Reactor Cooling(无源汇有上下界的网络流)

    时间限制:0.5s 空间限制:6M 题意: 显然就是求一个无源汇有上下界的网络流的可行流的问题 Solution: 没什么好说的,直接判定可行流,输出就好了 code /* 无汇源有上下界的网络流 * ...

  3. 解决mac上Android开发时出现的ADB server didn't ACK

    mac 上adb连接不到android手机可以参考:这里 xxxdeMacPro:~ xxx$ adb start-server * daemon not running. starting it n ...

  4. struts2文件上传,文件类型 allowedTypes

    struts2文件上传,文件类型 allowedTypes 1 '.a' : 'application/octet-stream', 2 '.ai' : 'application/postscript ...

  5. ubuntu 14.04.02 LTS 启动项误写入 /dev/sda1 (win 7 loader) 修复

    问题描述: 在win7下安装Ubuntu14.04,由于启动项 /boot loader 安装位置错误(/dev/sda1 (win 7 loader) )导致无法进入Windows(在GRUB界面能 ...

  6. sql server 数据分页显示。

    select [ID] ,[StockApplyCode] ,[RcCode] ,[LabCenterCode] ,[LabGroupCode] ,[LabGroupName] ,[Barcode] ...

  7. 如何去掉textarea右下角的灰色角标?

    在css中定义: resize: none; ,这个样式同时禁用textarea调整大小

  8. javascript实现ajax

    什么是 ajax ajax 即“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),也就是无刷新数据读取. http 请求 首先需要了解 htt ...

  9. PHP Mysql类【转】

    前几天没事在网上转发现了一个类,记录下来: <?php Class DB { private $link_id; private $handle; private $is_log; privat ...

  10. 如何用extjs显示一个已经存在的页面

    最近碰到了一个需求: 画面上有个按钮,点击了按钮之后,弹出一个窗体(window),而该窗体(window)上显示的内容是某个系统的内容,如下图所示 查了好长时间的extjs的帮助文档,没有找个现成的 ...