Heim  >  Artikel  >  Web-Frontend  >  safari cookie设置中文失败

safari cookie设置中文失败

WBOY
WBOYOriginal
2016-08-04 08:53:141213Durchsuche

  最近用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()是配对的。

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:css3实现动画滚动条Nächster Artikel:css3的过滤效果