广

IOS开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    safari cookie设置中文失败的解决方法

    2018-04-07 07:49:26 次阅读 稿源:互联网
    广告

    最近用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设置中文失败的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告