解决JavaScript读取中文cookie时的乱码问题

原来的javascript函数如下:

function Get_Cookie(name) { 
   var start = document.cookie.indexOf(name+…=…);
   var len = start+name.length+1;
   if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
   if (start == -1) return null;
   var end = document.cookie.indexOf(…;…,len);
   if (end == -1) end = document.cookie.length;
   return unescape(document.cookie.substring(len,end));
} 
 
function Set_Cookie(name,value,expires,path,domain,secure) { 
    expires = expires * 60*60*24*1000;
    var today = new Date();
    var expires_date = new Date( today.getTime() + (expires) );
    var cookieString = name + …=… +escape(value) +
       ( (expires) ? …;expires=… + expires_date.toGMTString() : ……) +
       ( (path) ? …;path=… + path : ……) +
       ( (domain) ? …;domain=… + domain : ……) +
       ( (secure) ? …;secure… : ……);
    document.cookie = cookieString;
}

当cookies中保存有中文信息时,会发生乱码,这样修改下就会解决问题

//cookie操作函数
function Get_Cookie(name) { 
   var start = document.cookie.indexOf(name+…=…);
   var len = start+name.length+1;
   if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
   if (start == -1) return null;
   var end = document.cookie.indexOf(…;…,len);
   if (end == -1) end = document.cookie.length;
   return decodeURI(document.cookie.substring(len,end));  
} 
 
function Set_Cookie(name,value,expires,path,domain,secure) { 
    expires = expires * 60*60*24*1000;
    var today = new Date();
    var expires_date = new Date( today.getTime() + (expires) );
    var cookieString = name + …=… +escape(value) +
       ( (expires) ? …;expires=… + expires_date.toGMTString() : ……) +
       ( (path) ? …;path=… + path : ……) +
       ( (domain) ? …;domain=… + domain : ……) +
       ( (secure) ? …;secure… : ……);
    document.cookie = cookieString;
}

主要是把unescape改成了decodeURI。

neptune -
共有0个回答