JS 对 cookie 操作
function setCookie(name,value)
{
    var Days = 30; //此 cookie 将被保存 30 天
    var exp  = new Date();    //new Date("December 31, 9998");
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getCookie(name)
{
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
    if(arr != null) return unescape(arr[2]); return null;
}
function delCookie(name)
{
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval=getCookie(name);
    if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}这种方式与ASP或者ASP.net 都是可以互相取写 cookie 的

解决方案 »

  1.   

    写入的cookie已经不能改了,必须用纯js的方法把读取的cookie转换回汉字
    有可能吗?
      

  2.   

    当然可以,其实就是对URLEncode进行Decode,cookie和url一样进行同一种格式的编码的,一般在服务器都能自动译码(我用过的asp、php都是如此),客户端需要手动译码。
    下面是一个vbs版本的<SCRIPT LANGUAGE="VBScript">
    alert(URLDecode("%B6%AF%B8%D0%B3%AC%C8%CB%A3%AC%CD%DB%B9%FE%B9%FE%B9%FE%B9%FE%A1%A3%A1%A3%A1%A3"))
    function URLDecode(enStr)
    dim deStr,strSpecial
    dim c,i,v
      deStr=""
      strSpecial="!""#$%&'()*+,/:;<=>?@[\]^`{|}~%"
      for i=1 to len(enStr)
        c=Mid(enStr,i,1)
        if c="%" then
          v=eval("&h"+Mid(enStr,i+1,2))
          if inStr(strSpecial,chr(v))>0 then
            deStr=deStr&chr(v)
            i=i+2
          else
            v=eval("&h"+Mid(enStr,i+1,2)+Mid(enStr,i+4,2))
            deStr=deStr&chr(v)
            i=i+5
          end if
        else
          if c="+" then
            deStr=deStr&" "
          else
            deStr=deStr&c
          end if
        end if
      next
      URLDecode=deStr
    end function
    </SCRIPT>