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 宋針還 閱讀(2946) 評論(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編碼的問題。  回復  更多評論
            
          主站蜘蛛池模板: 德兴市| 沂南县| 屏边| 义马市| 夏津县| 尖扎县| 辉南县| 济宁市| 东至县| 江源县| 八宿县| 镇雄县| 徐闻县| 莱芜市| 秦安县| 琼海市| 曲周县| 通城县| 平陆县| 黄冈市| 图木舒克市| 淮阳县| 普兰县| 克什克腾旗| 滕州市| 马尔康县| 股票| 抚松县| 南和县| 镇江市| 平远县| 临武县| 凭祥市| 黑水县| 府谷县| 常德市| 阿图什市| 读书| 泸西县| 偃师市| 枞阳县|