• cookie保存中文登录账号获取时乱码问题


    登录成功后写入cookie的代码

    Response.Cookies["account"].Value = account;//"管理员"
    Response.Cookies["account"].Expires = DateTime.Now.AddDays(14);

    登录前读取cookie的代码

    if (Request.Cookies["account"] != null)
            ViewData["account"] = Request.Cookies["account"].Value;

    一般来说如果我们存储的Cookie值是英文的话这个写法是没问题的,但如果是中文,在读取出来的时候则很可能会是乱码。造成这个问题的原因一般都是编码格式的问题(即保存时的编码格式与读取时的编码格式不一致),所以只要我们统一保存与读取的编码格式就不会有这个问题了。

    一般的解决办法是统一用UTF-8的编码格式:

    登录成功后写入cookie的代码

    Response.Cookies["account"].Value = HttpUtility.UrlEncode(account, Encoding.GetEncoding("UTF-8"));//"管理员"
    Response.Cookies["account"].Expires = DateTime.Now.AddDays(14);


    登录前读取cookie的代码

    if (Request.Cookies["account"]!=null)
            ViewData["account"] =HttpUtility.UrlDecode(Request.Cookies["account"].Value, Encoding.GetEncoding("UTF-8"));
     
    另外编码和解码要一致
    System.Web.HttpUtility.UrlDecode 和 System.Web.HttpUtility.UrlEncode
    System.Web.HttpContext.Current.Server.UrlDecode 和 System.Web.HttpContext.Current.Server.UrlEncode
  • 相关阅读:
    Mac 上 Go 语言的安装以及编辑器的配置
    【Go学习】立Flag
    python 使用多线程同时执行多个函数
    python闭包
    mfs环境搭建之元数据服务器(master)节点安装-2
    mfs分布式文件系统介绍-01
    vscode中vim插件对ctrl键的设置
    文本截取{}的内容,生成新数组
    如何过滤a数组中b数组存在的值
    js动态加载js文件
  • 原文地址:https://www.cnblogs.com/ccccc05/p/6221400.html
走看看 - 开发者的网上家园