szhswl
          宋針還的個人空間

          原來的javascript函數如下:

          1. //cookie操作函數
          2. function Get_Cookie(name) { 
          3.    var start = document.cookie.indexOf(name+"=");
          4.    var len = start+name.length+1;
          5.    if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
          6.    if (start == -1) return null;
          7.    var end = document.cookie.indexOf(";",len);
          8.    if (end == -1) end = document.cookie.length;
          9.    return unescape(document.cookie.substring(len,end));
          10. } 
          11.  
          12. function Set_Cookie(name,value,expires,path,domain,secure) { 
          13.     expires = expires * 60*60*24*1000;
          14.     var today = new Date();
          15.     var expires_date = new Date( today.getTime() + (expires) );
          16.     var cookieString = name + "=" +escape(value) +
          17.        ( (expires) ? ";expires=" + expires_date.toGMTString() : "") +
          18.        ( (path) ? ";path=" + path : "") +
          19.        ( (domain) ? ";domain=" + domain : "") +
          20.        ( (secure) ? ";secure" : "");
          21.     document.cookie = cookieString;
          22. }

          當cookies中保存有中文信息時,會發生亂碼,這樣修改下就會解決問題

          1. //cookie操作函數
          2. function Get_Cookie(name) { 
          3.    var start = document.cookie.indexOf(name+"=");
          4.    var len = start+name.length+1;
          5.    if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
          6.    if (start == -1) return null;
          7.    var end = document.cookie.indexOf(";",len);
          8.    if (end == -1) end = document.cookie.length;
          9.    return decodeURI(document.cookie.substring(len,end));  
          10. } 
          11.  
          12. function Set_Cookie(name,value,expires,path,domain,secure) { 
          13.     expires = expires * 60*60*24*1000;
          14.     var today = new Date();
          15.     var expires_date = new Date( today.getTime() + (expires) );
          16.     var cookieString = name + "=" +escape(value) +
          17.        ( (expires) ? ";expires=" + expires_date.toGMTString() : "") +
          18.        ( (path) ? ";path=" + path : "") +
          19.        ( (domain) ? ";domain=" + domain : "") +
          20.        ( (secure) ? ";secure" : "");
          21.     document.cookie = cookieString;
          22. }

          主要是把unescape改成了decodeURI。



          ---------------------------------------------------------------------------------------------------------------------------------
          說人之短,乃護己之短。夸己之長,乃忌人之長。皆由存心不厚,識量太狹耳。能去此弊,可以進德,可以遠怨。
          http://www.aygfsteel.com/szhswl
          ------------------------------------------------------------------------------------------------------ ----------------- ---------
          posted on 2007-12-04 09:33 宋針還 閱讀(2951) 評論(3)  編輯  收藏 所屬分類: JAVASCRIPT

          FeedBack:
          # re: 解決javascript讀取中文cookie時的亂碼問題
          2007-12-06 00:27 | vistor
          試了,不行  回復  更多評論
            
          # re: 解決javascript讀取中文cookie時的亂碼問題[未登錄]
          2007-12-06 09:28 | 宋針還
          @vistor
          在《JavaScript: The Definitive Guide, 4th Edition》中寫到:

          In client-side JavaScript, a common use of escape( ) is to encode cookie values, which have restrictions on the punctuation characters they may contain.
          在客戶端腳本程序中,escape( )函數可以被用作對具有不規范標點的cookie進行編碼。(就像我們函數中所用到的一樣)

          Although the escape( ) function was standardized in the first version of ECMAScript, it has been deprecated and removed from the standard by ECMAScript v3. Implementations of ECMAScript are likely to implement this function, but they are not required to. In JavaScript 1.5 and JScript 5.5 and later, you should use encodeURI( ) and encodeURIComponent( ) instead of escape( ).
          雖然escape( ) 已經在ECMAScript中被標準化,但是在ECMAScript v3中,escape( ) 被剔出,如果需要在JavaScript 1.5 和JScript 5.5以后的版本中使用這個函數,建議使用encodeURI( )和encodeURIComponent( )。

          按照手冊的建議,修改JavaScript函數中的escape()和unescape()為encodeURI()和decodeURI()。
            回復  更多評論
            
          # re: 解決javascript讀取中文cookie時的亂碼問題
          2009-08-11 17:41 | fasd
          只能解決UTF8編碼的情況,解決不了GBK編碼的問題。  回復  更多評論
            
          主站蜘蛛池模板: 白山市| 墨玉县| 云林县| 临邑县| SHOW| 哈密市| 土默特右旗| 瑞安市| 奈曼旗| 精河县| 金寨县| 沙洋县| 平塘县| 富阳市| 青川县| 仪陇县| 东乌| 乐平市| 茌平县| 双牌县| 晴隆县| 仪陇县| 遵义县| 宁陵县| 闽侯县| 方正县| 岢岚县| 景宁| 通海县| 溧阳市| 疏勒县| 拉萨市| 南靖县| 黄陵县| 西平县| 临沧市| 嫩江县| 枝江市| 大埔区| 石楼县| 泌阳县|