safari cookie设置中文失败

WBOY
풀어 주다: 2016-08-04 08:53:14
원래의
1213명이 탐색했습니다.

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

 

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!