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 宋針還 閱讀(2945) 評論(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編碼的問題。  回復  更多評論
            
          主站蜘蛛池模板: 彭州市| 静宁县| 老河口市| 大丰市| 锦屏县| 根河市| 任丘市| 扎兰屯市| 台江县| 罗田县| 沭阳县| 余干县| 婺源县| 嘉义县| 福泉市| 宁阳县| 朝阳市| 罗江县| 凤台县| 三江| 淅川县| 环江| 阳朔县| 彭水| 安仁县| 福贡县| 新河县| 遂川县| 夏河县| 多伦县| 甘南县| 巩义市| 海南省| 盐亭县| 达孜县| 马尔康县| 文昌市| 宜城市| 井冈山市| 鄢陵县| 本溪市|