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. 极简主义,对逻辑操作符||和&&深度运用的理解

    丧心病狂的代码压缩好像违背了愉快阅读的本真,所以刨根问底想要了解个究竟,最后发现这不只是前端大牛装逼卖萌的绝技,也是代码洁癖爱好者的利器,毕竟这样看上去确实蛮优雅的; 一开始,我们接触到的代码是这样的 ...

  2. ThinkPHP 笔记

    1.循环中使用比较运算符 <volist name="subjects" id="v">       <option value=" ...

  3. HTML5 拖拽 & fabric 插件

    ### 拖拽 //html <div ondrop="drop(event)" ondragover="allowDrop(event)">< ...

  4. qt环境问题导致的编译错误

    /usr/include/qt5/QtCore/qprocess.h:245:24: error: missing binary operator before token "(" ...

  5. Python自动化运维之22、JavaScript

    一.简介 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理.学习了htm ...

  6. 理解Python的*args, **kwargs

    1 # coding=utf-8 2 def speak(*args, **kwargs): 3 print args, kwargs 4 5 6 a = 1 7 b = 2 8 c = 3 9 sp ...

  7. sql新增后返回主键

    对于刚学的人来说有点帮助,新增后返回主键有两种方法: 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @ ...

  8. codeforces C. Ryouko's Memory Note

    题意:给你m个数,然后你选择一个数替换成别的数,使得.最小.注意选择的那个数在这m个数与它相同的数都必须替换同样的数. 思路:用vector记录每一个数与它相邻的数,如果相同不必记录,然后遍历替换成与 ...

  9. 玩玩TCPCOPY+ intercept+mysql-replay-module(未成功)

    TCPCOPY+ intercept这两个模拟流量转发倒简单. 但,想实现一个mysql-replay-module模块时,失败了.(我现在仔细想想,这个方案,在我们现在的场景里,实用性不大,但弄好点 ...

  10. IHS怎么通过80端口连接WAS——<转>

    IHS如何通过80端口连接WAS? 经常看到有朋友问这个问题,所以简单总结一下基本步骤:   IHS和WAS之间是通过Plugin来实现的,一般的Plugins和IHS安装在同一物理机器上,WAS安装 ...