网络上流传的 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. ASIC 前端功能验证等级与对应年薪划分[个人意见] (2011-07-04 15:33:35

    下面的讨论转载自eetop,我选取了一些有意义的讨论,加了我的评注. 楼主zhhzhuawei认为 ===================================== 对于ASIC的前端功能验 ...

  2. ASP.Net中GridView多层嵌套,用最里层的控件获取到外层GridView

    protected void ddlCode_SelectedIndexChanged(object sender, EventArgs e) { DropDownList ddlCode = (Dr ...

  3. VS2010常用插件介绍之Javascript插件(一)

    引自:http://blog.csdn.net/cyxlzzs/article/details/6583577 今天在写JS时,写到500多行时,感觉代码已经很难看了.想到C#代码都有折叠功能,是不是 ...

  4. magento搜索属性值的设置方法

    前台特性(Frontend Properties)在快速搜索中应用(Use in quick search) - 开启此选项,在客户使用Header中的 搜索功能时Magento将搜索所有产品这个At ...

  5. JS实现跳转到页面任何地方

    要实现两个内容: 1.从A页面跳转到B页面任何地方 方法:用id对要跳转的地方进行标记. 首先,在A页面可以设一个链接 <a href = "b.html#pos" targ ...

  6. photoshop 常用快捷键大全

    一.文件新建 CTRL+N打开 CTRL+O 打开为 ALT+CTRL+O关闭 CTRL+W保存 CTRL+S 另存为 CTRL+SHIFT+S另存为网页格式 CTRL+ALT+S打印设置 CTRL+ ...

  7. com.android.builder.packaging.DuplicateFile

    解决方法:     packagingOptions {        exclude 'META-INF/DEPENDENCIES'        exclude 'META-INF/NOTICE' ...

  8. Virtual Studio C++ Version Macro - _MSC_VER

    MSVC++ (Visual Studio ) MSVC++ (Visual Studio ) MSVC++ (Visual Studio ) MSVC++ (Visual Studio ) MSVC ...

  9. Oracle 递归函数与等级

    --基数数据1 SELECT ID, mt.materialtypename, mt.parenttypeid FROM material_type mt; 使用递归还是与LEVEL 1 SELECT ...

  10. linux/windows系统oracle数据库简单冷备同步

    linux/windows系统oracle数据库简单冷备同步 我们有一个财务系统比较看重财务数据的安全性,同时我们拥有两套系统,一个生产环境(linux),一个应急备份环境(windows).备份环境 ...