首頁  >  文章  >  web前端  >  safari cookie設定中文失敗

safari cookie設定中文失敗

WBOY
WBOY原創
2016-08-04 08:53:141214瀏覽

  最近用H5進行手機端開發,由於是window作業系統,為了方便開發和調試,直接在chrome瀏覽器上進行測試,然後在android機上進行手機端測試,當功能基本完工後,原來在android上運行正常的應用,在IOS上運行時,出現很多奇怪的問題,根據排查,發現是由於cookie未取到值而導致相關資訊無法取得。

  一開始以為是cookie中文亂碼的問題,後來跟踪發現,cookie的值壓根就沒賦值成功,網上查了資料,發現safari不允許非ASCII編碼的值,換句話說:不允許中文存儲。

  為了解決這個問題,在設定cookie值的時候必須先編碼,然後取值的時候再解碼。

     後端設定cookie用的asp.net,前端取得用的Javascript,他們的編碼和解碼能一致麼?目前只能試試看了:

    試了幾種方法,發現用HttpUtility.UrlEncode()進行編碼成功:

<span style="color: #008080;">1</span>  cookie = <span style="color: #0000ff;">new</span> HttpCookie(<span style="color: #800000;">"</span><span style="color: #800000;">rdname</span><span style="color: #800000;">"</span><span style="color: #000000;">);
</span><span style="color: #008080;">2</span>  cookie.Value =<span style="color: #000000;"> HttpUtility.UrlEncode(user.RegisterDeptName);
</span><span style="color: #008080;">3</span>  cookie.Expires = System.DateTime.Now.AddDays(<span style="color: #800080;">30</span><span style="color: #000000;">);
</span><span style="color: #008080;">4</span>  context.Response.Cookies.Set(cookie);

  客戶端Javascript解碼為:

<span style="color: #008080;">1</span> <span style="color: #0000ff;">var</span> deptName = cookie('<span style="color: #800000;">rdname</span>'<span style="color: #000000;">);
</span><span style="color: #008080;">2</span> deptName=<span style="color: #000000;"> decodeURIComponent(deptName);
</span><span style="color: #008080;">3</span> $("#pickerlb").val(deptName);

      也就是說:Javascript中的decodeURIComponent()和C#的HttpUtility.UrlEncode()是配對的。

 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn