|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。cookie|编程|客户端|中文客户端Cookie中文编程(转自yesky.com)
Cookie的利用中,我们发明如许一个成绩:假如写进Cookie的内容是中文(如用户称号),用服务器端程序(如ASP或PHP)读出完整准确,可是用一样平常的JavaScript或VBScript的读Cookie函数掏出的倒是一堆乱码。这是一个辣手的成绩,由于在有些情形下,Cookie的内容必要在客户机端用剧本言语读取。假如你写进了中文,失掉了一堆乱码,是否是感到很别扭呢?办理这个成绩,还要从Cookie的存取体例提及。
我们晓得,写进Cookie内容前必要举行escape(十六进制编码),编码时又是以字节为单元的,这就是成绩的关头地点:任何一个汉字城市被拆成两个字节分离编码;而在读Cookie时,unescape又以字节单元解码,因而最初每一个汉字都酿成了两个字节的乱码。怎样办呢?ASP或PHP体例可以准确读出,应当是在unescape解码后,又依照unicode编码把个中的汉字拼了出来。假如如许的话,能不克不及找到一种变通的办法办理这个成绩呢?细心研讨后发明,只需在十六进制codec(编解码)过程当中可以保留汉字信息就好了,因此我们必要再外包一层codec历程,计划以下:
1.在escape编码前,把Cookie字符串中的每一个字符转换为unicode码的字符串情势(用一特别字符作为字串的分开符)。
2.在unescape解码后,先把一切unicode字串提掏出来,再用对应的函数转换为原字符。
<SCRIPTLANGUAGE=javascript>
<!--
//编码程序:
functionCodeCookie(str)
{
varstrRtn="";
for(vari=str.length-1;i>=0;i--)
{
strRtn+=str.charCodeAt(i);
if(i)strRtn+="a";//用a作分开符
}
returnstrRtn;
}
//解码程序:
functionDecodeCookie(str)
{
varstrArr;
varstrRtn="";
strArr=str.split("a");
for(vari=strArr.length-1;i>=0;i--)
strRtn+=String.fromCharCode(eval(strArr[i]));
returnstrRtn;
}
//-->
</script>
VBScript版程序以下:
<SCRIPTLANGUAGE=vbscript>
<!--
"编码程序:
functionCodeCookie(str)
Dimi
DimstrRtn
fori=len(str)to1step-1
strRtn=strRtn&ascw(mid(str,i,1))
if(i1)thenstrRtntrRtn&"a""用a作分开符
next
CodeCookie=strRtn
endfunction
"解码程序:
functionDecodeCookie(str)
Dimi
DimstrArr,strRtn
strArr=Split(str,"a");
fori=UBound(strArr)-LBound(strArr)to1step-1
strRtn=strRtn&chrw(Val(strArr(i)))
next
DecodeCookie=strRtn
endfunction
-->
</script>
</p>ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。 |
|