ASP JScript 两个特殊的问题

在使用旧有的 ASP (JScript,非 VBScript)中遇到了两个特殊的问题,特记录于此。

一、Global.asa 排斥中文

位于 ASP 程序根目录下的 global.asa 文件,为应用程序的启动文件。可以用 VBScript /JScript 编写。但创建配置文件的过程中,发现 Global.asa 只能按照 ASCII 编码保存之,于是不能直接使用中文。这不得不说是微软设计上的不足,——直到当前最新的 IIS 也没有解决该问题(当前环境为 IIS 8 Express )。假如采用外部引入文件的方式,如下所示:

<script runat="server" language="ecmascript" src="/public/config.js"></script>
<script runat="server" language="ecmascript" src="/public/section.js"></script>
<script runat="server" language="ecmascript" src="/bigfoot/asp_init.js"></script>
亦不能凑效。鉴于此,必须将中文作特殊编码并不超出 ASCII 编码集之范围才能符合要求。于是想起,JavaScript 语言本身支持 unicode 字符串 16 进制书写,以\u 前缀 + 16 进制数代表——即显示方式如"\u96c6\u56e2\u6982\u51b5"却为"集团概况"之值也。虽然输入不是中文,但显示的过程中 JS 会自动解码以显示人类正确阅读的字符。这便很好地满足我们当前的需求。紧接着,我们找到了以上对中文的编码算法:

function encodeUnicode(str){  
        var arr = [];  
        var hex;  
        for (var i = 0 , j = str.length; i < j; i++) {  
            hex = ("00" + str.charCodeAt(i).toString(16)).slice(-4);  
            if(hex.length < 4){ // 宽度不一致  
                hex = '0' + hex;  
            }  
            arr.push(hex);  
        }  
          
        return "\\u" + arr.join("\\u");  
 }  
解码为(解码无须手动):

function un(str) {  
       return unescape(str.replace(g, "%"));  
}

在保存 JSON 配置文件的时候,调用 encodeUnicode(json) 即可。实际上,关于该问题的解决方式,乃是受到小弟以前写过的一篇博文所启发:《Javascript 中文转义字符》

二、读取 Application 对象中的数组异常

修正如下。

var newObj = [];

/**
 * @private
 * @param {mixed} v
 * @return {Boolean} 是否hash(是否对象)。
 */
function isArray(v){
    return !!v && (isArray.toString.call(v) != isArray.token) && v.length && typeof v != 'string' && typeof v != 'function';
}
 isArray.toString = Object.prototype.toString
,isArray.token      = '[object Object]';


(function(source, target){
    var sourceObj ,targetObj;
        
    for(var i = 0, j = source.length; i < j; i++){
        
         sourceObj = source[i]
        ,targetObj = {};
        
        for(var k in sourceObj){
            var el = sourceObj[k];
            // Array
            targetObj[k] = isArray(el) ? arguments.callee(el, []) : el;
        }
        target.push(targetObj);
    }
    return target;
})(Application.staticObjects("dict").Item('$$_site'), newObj);


有了这款基于JavaScript的ASP开源MVC框架,你的asp老项目有可以焕发青春活力了!其实不伦是asp,php,java还是python,任何一种编程语言,只要是开源的,就可以不断更新,获得延续的生命力。 单文件入口。Single entry point. > > 代码和程序的真正分离。A real MVC. > > 模板编译ASP代码。Combine template file to ASP(JScript) code. > > 支持类库扩展以及模板自定义标签扩展。Support Library and Tag extend. > > 支持多种数据库,默认支持ACCESS、MSSQL、MYSQL、SQLITE,可自定义其他类型数据库。Support Muti-Type-Databases. > > 支持多数据库操作。Support Muti-Databases-Operate. > > 表单验证支持,HTTP请求数据可直接用来更新数据库。FormValidatee is supported, and Http Post data can be used for insert or update table record(s). > > 提供HttpRequest,HttpUpload,Soap,OAUTH2.0等模块。"HttpRequest,HttpUpload,Soap,OAUTH2.0" are supported. > > 提供CryptoJS,提供AES/DES/RC4/Rabbit/pbkdf2/ripemd160等算法。CryptoJS is supported. > > 内置Json解析和构建。Json2 is built-in.You can use it to parse or stringify Json data. > > 支持多种路由方式,包括404、URL、isapi_URLRewrite,完全自定义的路由配置。URLRoute is Supported(404 Error Page, URL Route,ISAPI_URIRewrite). > > 路由支持REST。REST is Supported. > > 支持类库缓存,编译缓存,HTML缓存,数据库Model缓存。Library Cache, Combined File Cache, HTML Cache and Model Cache. > > 资源统一管理,统一销毁,使您专心于业务逻辑处理。You can pay much more attention on you business.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sp42a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值