例如你要写入的cookie内容是"一顶abc",经过codecookie变为"99a98a97a-31029a26432a"(基于安全考虑,将字符串反转),再经过escape编码后变为"99a98a97a%2d31029a26432a"(escape编码将除字母和数字以外的字符转换为十六进制%xx的形式),注意分隔符不能选%,d和数字。当然,如果有类似密码的重要信息,还需要在加密上再强化一下。因为写入cookie的一般都是短信息,编码后增加的一些字节可忽略不计。下面的javascript读写cookie函数中就加入了以上的中文支持。
function setcookie(name,value,expires)
{
var exp=new date();
exp.settime(exp.gettime()+expires*60*1000);
document.cookie=name+"="+escape(codecookie(value))+" ; expires="+exp.togmtstring()+" ; path=/";
}
function getcookie (name)
{
var strarg=name+"=";
var narglen=strarg.length;
var ncookielen=document.cookie.length;
var nend;
var i=0;
var j;
while (i$#@60;ncookielen)
{
j=i+narglen;
if (document.cookie.substring(i,j)==strarg)
{
nend=document.cookie.indexof (";",j);
if (nend==-1) nend=document.cookie.length;
return decodecookie(unescape(document.cookie.substring(j,nend)));
}
i=document.cookie.indexof(" ",i)+1;
if (i==0) break;
}
return null;
}
如果用cgi程序写入中文cookie,客户端读取。如在asp里,可以先使用前述的编码函数后,再用response写入,例如:response.cookies("name")=codecookie("张三")至此,中文cookie的问题基本解决。
