例如你要寫入的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的問題基本解決。
|