人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

客戶端Cookie中文編程(上)

客戶端Cookie中文編程(上)

更新時間:2022-07-03 文章作者:未知 信息來源:網絡 閱讀次數:

客戶端Cookie中文編程(轉自yesky.com)

 Cookie的使用中,我們發現這樣一個問題:如果寫入Cookie的內容是中文(如用戶稱呼),用服務器端程序(如ASP或PHP)讀出完全正確,但是用一般的JavaScript或VBScript的讀Cookie函數取出的卻是一堆亂碼。這是一個棘手的問題,因為在有些情況下,Cookie的內容需要在客戶機端用腳本語言讀取。如果你寫入了中文,得到了一堆亂碼,是不是感覺很別扭呢?解決這個問題,還要從Cookie的存取方式說起。
 我們知道,寫入Cookie內容前需要進行escape(十六進制編碼),編碼時又是以字節為單位的,這就是問題的關鍵所在:任何一個漢字都會被拆成兩個字節分別編碼;而在讀Cookie時,unescape又以字節單位解碼,因此最后每個漢字都變成了兩個字節的亂碼。怎么辦呢?ASP或PHP方式能夠正確讀出,應該是在unescape解碼后,又按照unicode編碼把其中的漢字拼了出來。如果這樣的話,能不能找到一種變通的方法解決這個問題呢?仔細研究后發現,只要在十六進制codec(編解碼)過程中能夠保存漢字信息就行了,因而我們需要再外包一層codec過程,方案如下:

  1.在escape編碼前,把Cookie字符串中的每個字符轉換為unicode碼的字符串形式(用一特殊字符作為字串的分隔符)。

  2.在unescape解碼后,先把所有unicode字串提取出來,再用對應的函數轉換為原字符。

<SCRIPT LANGUAGE=javascript>
<!--
//編碼程序:
function CodeCookie(str)
{
 var strRtn="";

 for (var i=str.length-1;i>=0;i--)
 {
  strRtn+=str.charCodeAt(i);
  if (i) strRtn+="a"; //用a作分隔符
 }
 return strRtn;
}

//解碼程序:
function DecodeCookie(str)
{
 var strArr;
 var strRtn="";

 strArr=str.split("a");

 for (var i=strArr.length-1;i>=0;i--)
 strRtn+=String.fromCharCode(eval(strArr[i]));

 return strRtn;
}
//-->
</script>


VBScript版程序如下:

<SCRIPT LANGUAGE=vbscript>
<!--
"編碼程序:
function CodeCookie(str)
Dim i
Dim strRtn

for i=len(str) to 1 step -1
strRtn=strRtn & ascw(mid(str,i,1))
if (i<>1) then strRtn trRtn & "a" "用a作分隔符
next
CodeCookie=strRtn
end function

"解碼程序:
function DecodeCookie(str)
Dim i
Dim strArr,strRtn

strArr=Split(str,"a");

for i=UBound(strArr)-LBound(strArr) to 1 step -1
strRtn=strRtn & chrw(Val(strArr(i)))
next

DecodeCookie=strRtn
end function
-->
</script>


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 珠海市| 内乡县| 卢湾区| 霞浦县| 宜州市| 嘉兴市| 丘北县| 天峻县| 武定县| 苍山县| 安泽县| 任丘市| 安丘市| 乳源| 林周县| 滨海县| 南澳县| 黎川县| 广州市| 琼中| 抚州市| 平陆县| 甘洛县| 石阡县| 武清区| 彰武县| 西华县| 牙克石市| 康平县| 米易县| 基隆市| 桦川县| 五原县| 华亭县| 谢通门县| 敖汉旗| 靖远县| 天峨县| 盐源县| 敖汉旗| 洞头县|