网络上流传的 vbsEscape UnEscape都只针对asp而言,js传递给asp时可进行转义解码,但asp输出json时如果用这些函数进行编码的话,js是无法正常解码的。

下面是经过实际验证可用的asp escape函数:

原文地址:http://www.webdevbros.net/2007/04/26/json-character-escaping-function-in-classic-asp/

'******************************************************************************************

'' @SDESCRIPTION:   takes a given string and makes it JSON valid (http://json.org/)

'' @AUTHOR: Michael Rebec

'' @DESCRIPTION:    all characters which needs to be escaped are beeing replaced by their

''                  unicode representation according to the

''                  RFC4627#2.5 - http://www.ietf.org/rfc/rfc4627.txt?number=4627

'' @PARAM:          val [string]: value which should be escaped

'' @RETURN:         [string] JSON valid string

'******************************************************************************************

public function escapeJSON(val)

    cDoubleQuote = &h22

    cRevSolidus = &h5C

    cSolidus = &h2F

 

    for i = 1 to (len(val))

        currentDigit = mid(val, i, 1)

        if asc(currentDigit) > &h00 and asc(currentDigit) < &h1F then

            currentDigit = escapeJSONSquence(currentDigit)

        elseif asc(currentDigit) >= &hC280 and asc(currentDigit) <= &hC2BF then

            currentDigit = "u00" + right(padLeft(hex(asc(currentDigit) - &hC200), 2, 0), 2)

        elseif asc(currentDigit) >= &hC380 and asc(currentDigit) <= &hC3BF then

            currentDigit = "u00" + right(padLeft(hex(asc(currentDigit) - &hC2C0), 2, 0), 2)

        else

            select case asc(currentDigit)

                case cDoubleQuote: currentDigit = escapeJSONSquence(currentDigit)

                case cRevSolidus: currentDigit = escapeJSONSquence(currentDigit)

                case cSolidus: currentDigit = escapeJSONSquence(currentDigit)

            end select

        end if

        escapeJSON = escapeJSON & currentDigit

    next

end function

 

function escapeJSONSquence(digit)

    escapeJSONSquence = "u00" + right(padLeft(hex(asc(digit)), 2, 0), 2)

end function 

 

function padLeft(value, totalLength, paddingChar)

    padLeft = right(clone(paddingChar, totalLength) & value, totalLength)

end function

 

public function clone(byVal str, n)

    for i = 1 to n : clone = clone & str : next

end function

ASP 下 能作为json输出后js能解密的 escape 函数的更多相关文章

  1. List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac

    List多个字段标识过滤 class Program{  public static void Main(string[] args) { List<T> list = new List& ...

  2. 刷新各ifream当前页,下拉项改变触发事件js,给选中项加背景色js

    <script type="text/javascript" language="javascript"> //刷新框架各页面 function r ...

  3. (转)JSON数据格式和js操作json总结

    原:http://niutuku.com/tech/javaScript/273643.shtml JSON数据格式和js操作json总结 来源:niutuku.com |         vince ...

  4. json进阶(一)js读取解析JSON类型数据

    js读取解析JSON类型数据 一.什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式,同 ...

  5. ASP.NET中使用JSON方便实现前台与后台的数据交换

    ASP.NET中使用JSON方便实现前台与后台的数据交换 发表于2014/9/13 6:47:08  8652人阅读 分类: ASP.NET Jquery extjs 一.前台向后台请求数据 在页面加 ...

  6. [Asp.net mvc]Asp.net mvc 使用Json传递数据

    在之前的练习中一直是直接传递的Model到后台或是单个数据到后台,今天在使用中遇到了点问题,不能使用Model传递到后台,但又要实现多个数据到后台,实验了多次有了以下的解决方案,给自己留个笔记. 功能 ...

  7. JavaScript中使用JSON,即JS操作JSON总结

    JSON(JavaScript Object Notation 对象标记) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生 ...

  8. asp.net中利用JSON进行增删改查中运用到的方法

    //asp.net中 利用JSON进行操作, //增加: //当点击“增加链接的时候”,弹出增加信息窗口,然后,在窗体中输入完整信息,点击提交按钮. //这里我们需要考虑这些:我会进行异步提交,使用j ...

  9. ASP.NET Core launchsettings.json 文件

    ASP.NET Core launchsettings.json 文件 在本节中,我们将讨论在 ASP.NET Core 项目中launchsettings.json文件的重要性. launchset ...

随机推荐

  1. Android开发之”再按一次退出程序“的实现

    现在移动客户端退出程序对话框退出越来越不流行了,都开始使用连续按两次来退出,即著名的“再按一次退出程序”模式.现在就看看怎么实现的吧. @SuppressLint("HandlerLeak& ...

  2. Java Inner class

    2016-03-27 内部类:就是把一个类的定义放在另外一个外围类定义的里面. class OutterClass{ class InnerClass { } } 1. 内部类主要有四种:成员内部类( ...

  3. RedHat6.1(64bit)安装JDK

    今天在服务器上装JDK1.5,费了不少力气,记录下来以供参考 服务器安装的操作系统为Red Hat 6.1(x86) [123@123 bin]$ cat /etc/redhat-release Re ...

  4. C#类和成员定义

    1 定义类     C#用关键字class来定义类.默认情况下,类声明为内部(internal)的,即只有当前项目中的代码才能访问它.与之相对应的,还可以用public关键字来修饰,这样该类还可以由其 ...

  5. Ajax返回数据类型

    MVC中,如果从controller返回的不是一个html,而是一个文本,使用AJAX中如何获取? 后台代码: public ActionResult UploadPicture() { return ...

  6. PHP mysql_real_escape_string() 函数防SQL注入

    PHP MySQL 函数 定义和用法 mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符. 下列字符受影响: \x00 \n \r \ ' &quo ...

  7. Candence下对“跨页连接器(off-page connector)”进行批量重命名的方法

    parts.ports.alias等等均可以在“属性编辑器(Property Editor)”中进行查看编辑,并通过复制到Excel等表格软件来进行批量修改.之后再粘贴回去的方法进行批量编辑.但是“跨 ...

  8. ios 可变参数(va_list,va_start,va_end)

    例如:UIAlertView的init方法中的otherButtonTitles:(NSString *)otherButtonTitles, ...等多个可变参数. ios实现传递不定长的多个参数的 ...

  9. Ext.Net学习笔记11:Ext.Net GridPanel的用法

    Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...

  10. oracle输出多行多列数据

    --方法一  匿名块中直接 dbms_output输出declare  v_sql    varchar2(200);  v_cursor sys_refcursor;  type v_type is ...