比來用H5停止手機端開辟,因為是Window操作體系,為了便利開辟和調試,直接在chrome閱讀器長進行測試,然後在Android機長進行手機端測試,當功效根本落成後,本來在Android上運轉正常的運用,在IOS上運轉時,湧現許多奇異的成績,依據排查,發明是因為cookie未取到值而招致相干信息沒法獲得。
一開端認為是cookie中文亂碼的成績,後來跟蹤發明,cookie的值壓根就沒賦值勝利,網上查了材料,發明safari不許可非ASCII編碼的值,換句話說:不許可中文存儲。
為懂得決這個成績,在設置cookie值的時刻必需先編碼,然後取值的時刻再解碼。
後端設置cookie用的asp.net,前端獲得用的JavaScript,他們的編碼息爭碼能分歧麼?以後只能試一試了:
試了幾種辦法,發明用HttpUtility.UrlEncode()停止編碼勝利:
cookie = new HttpCookie("rdname"); cookie.Value = HttpUtility.UrlEncode(user.RegisterDeptName); cookie.Expires = System.DateTime.Now.AddDays(30); context.Response.Cookies.Set(cookie);
客戶端JavaScript解碼為:
var deptName = cookie('rdname'); deptName= decodeURIComponent(deptName); $("#pickerlb").val(deptName);
也就是說:JavaScript中的decodeURIComponent()和C#的HttpUtility.UrlEncode()是配對的。
以上這篇safari cookie設置中文掉敗的處理辦法就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐本站。
【safari cookie設置中文掉敗的處理辦法】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!