- 热门文章:
- · 在javascript中为String对象添加trim,ltrim,rtrim方法
- · 一个使用多选框的小智力题,传教士与野人
- · 实现聊天室在线人员无刷新所需要的javascript技术 - 3
- · 实现聊天室在线人员无刷新所需要的javascript技术 - 2
- · 实现聊天室在线人员无刷新所需要的javascript技术 - 1
- · 动态增加\删除物件如(Text,Table)的例子
- · session的几个问题
- · 动态输入框的三个函数
- · 在ASP+中使用Cookie
- · Session对象在各浏览器中的有效范围
- · session的用法具体解说
- · ASP实现多语言支持
上一篇:客户端Cookie中文编程(2) >>
客户端Cookie中文编程(1)
或PHP)读出完全正确,但是用一般的JavaScript或VBScript的读Cookie函数取出的却是一堆乱码。这是一个棘手的问题,
因为在有些情况下,Cookie的内容需要在客户机端用脚本语言读取。如果你写入了中文,得到了一堆乱码,是不是感觉很
别扭呢?解决这个问题,还要从Cookie的存取方式说起。
我们知道,写入Cookie内容前需要进行escape(十六进制编码),编码时又是以字节为单位的,这就是问题的关键所
在:任何一个汉字都会被拆成两个字节分别编码;而在读Cookie时,unescape又以字节单位解码,因此最后每个汉字都变
成了两个字节的乱码。怎么办呢?ASP或PHP方式能够正确读出,应该是在unescape解码后,又按照unicode编码把其中的汉
字拼了出来。如果这样的话,能不能找到一种变通的方法解决这个问题呢?仔细研究后发现,只要在十六进制codec(编解
码)过程中能够保存汉字信息就行了,因而我们需要再外包一层codec过程,方案如下:
1.在escape编码前,把Cookie字符串中的每个字符转换为unicode码的字符串形式(用一特殊字符作为字串的分隔
符)。
2.在unescape解码后,先把所有unicode字串提取出来,再用对应的函数转换为原字符。
<SCRIPT LANGUAGE=javascript>
<!--
//编码程序:
function CodeCookie(str)
{
var strRtn="";
for (var i=str.length-1;i>=0;i--)
{
strRtn+=str.charCodeAt(i);
if (i) strRtn+="a"; //用a作分隔符
}
return strRtn;
}
//解码程序:
function DecodeCookie(str)
{
var strArr;
var strRtn="";
strArr=str.split("a");
for (var i=strArr.length-1;i>=0;i--)
strRtn+=String.fromCharCode(eval(strArr[i]));
return strRtn;
}
//-->
</script>
VBScript版程序如下:
<SCRIPT LANGUAGE=vbscript>
<!--
"编码程序:
function CodeCookie(str)
Dim i
Dim strRtn
for i=len(str) to 1 step -1
strRtn=strRtn & ascw(mid(str,i,1))
if (i<>1) then strRtn = strRtn & "a" "用a作分隔符
next
CodeCookie=strRtn
end function
"解码程序:
function DecodeCookie(str)
Dim i
Dim strArr,strRtn
strArr=Split(str,"a");
for i=UBound(strArr)-LBound(strArr) to 1 step -1
strRtn=strRtn & chrw(Val(strArr(i)))
next
DecodeCookie=strRtn
end function
-->
</script>
from www.yesky.com
相关文章:
- · 关于web应用程序的范围与session变量丢失问题的深入研究!
- · 判断访问者的浏览器是否支持javascript和Cookies
- · 下拉框连动的小例子(.htm版)
- · 下拉框连动的小例子(数据库版)
- · 一个查看ASP的javascript程序,方便大家学习ASP程序,进来看看吧(JS)
- · Internet Explorer 错误代码
- · 判断访问者的浏览器是否支持javascript和Cookies
- · ASP实现多语言支持
- · 关于Global.asa文件的深入研究与session变量失效提示的具体方法
- · 关于在浏览器中执行*.exe文件的深入探讨
- · 获得客房端的MAC(Media Access Control)地址
- · 动态缓冲
- · 数据库聊天室的“无刷新”技术要点
- · 您的主页支持各种浏览设备(ASP+篇)(下)
- · 让您的主页支持各种浏览设备(ASP+篇)(上)
- · 让Session对象在不同域名下实现共享
- · 在WAP网站上建立反馈表单
- · 如何使ASP输出结果不支持html语法?
- · Microsoft Script Debugger说明书
- · 使用<meta>标签的ASP源程序例子
- · 彻底终结浏览器Cahce页面的解决方案
- · 关于如何动态地在同一页面实现两个<select>互传(s1 <==> s2)
- · ASP中巧用Response属性
- · 判断客户端是否支持cookie的脚本!
- · 一个类似vbscript的round函数的javascript函数
- · HEAD元素使用集锦
- · 最新的关于Cookies的操作
- · 高级表单验证-针对多次提交表单
- · 脚本控制Frame
- · ASP中Cookie使用指南
- · 在大型社区系统中用二维数组实现用户高级功能(1)
- · 在ASP应用中如何限制同一表单被多次提交
- · 自己动手,结合javascript和dhtml做一个ubb编辑器(附例子代码)
- · Asp与导航文件
- · 在FLASH中调用ASP
- · 列出 IE5 所支持的所有server端变量
- · 深入研究“用ASP上载文件”(二)
- · 深入研究“用ASP上载文件”(一)
