C# .net中cookie值为中文时的乱码解决方法

在学习当中碰到cookie中文乱码问题,问题原因:cookie对中文不太支持,将中文放入cookie中会报错误。

   解决办法:

      1.编码

        将中文进行编码再放入cookie中:

        String username1 = URLEncoder.encode(username, "utf-8");

        String userpwd1 = URLEncoder.encode(userpwd, "utf-8");

        其中username和userpwd其中有中文,username1和userpwd1是进行编码之后的字符串。

        比如:(我这里做的是三天免登陆)

        Cookie loginCookie = new Cookie("loginCookie",username1+":"+userpwd1);

        //将编码后的内容放到Cookie中

        loginCookie.setMaxAge(24*3600);

        //设置loginCookie的有效期3天 24小时*60分钟*60秒

        resp.addCookie(loginCookie);

         //将loginCookie响应到浏览器

      2.解码(如果不进行解码,页面会获取的是base64编码后的内容)

        String unamePwd = URLDecoder.decode(cookies[i].getValue(),"utf-8");

        其中cookies[i].getValue()是要进行解码的内容,根据自己的情况进行修改。

        我的代码:

//创建存放用户名密码的map
Map<String,String> loginMap = new HashMap<String,String>();

//获取cookies
Cookie[] cookies = req.getCookies();
//进行判断
if(cookies!=null) {
  for(int i=0;i<cookies.length;i++) {
    if(cookies[i].getName().equals("loginCookie")) {
      String unamePwd = URLDecoder.decode(cookies[i].getValue(),"utf-8");
      String[] up = unamePwd.split(":");
      loginMap.put(up[0], up[1]);
      req.getSession().setAttribute("loginMap",loginMap);
    }
  }
}

   这样问题就解决了。

原文地址:https://www.cnblogs.com/zgjin/p/9835738.html

时间: 2024-10-06 22:54:27

C# .net中cookie值为中文时的乱码解决方法的相关文章

asp.net url址址中中文汉字参数传递乱码解决方法

中文乱码是网站开发中会常碰到的问题,今天我们来讲一下关于url址址中中文汉字参数传递乱码解决方法,有需要的朋友可以参考下.在cs文件里传参的时候用UrlEncode: Response.Redirect("B.asp教程x?Name="+Server.UrlEncode(Name)); 接参的时候用UrlDecode: Response.Write(Server.UrlDecode(Request.QueryString["Name"])); 脚本儿里传参的时候用e

mysql编写中文时变成问号解决方法

第一种: 建表时加charset utf8mb4:create database ya charset utf8mb4 第二种: 把编码改为可识别中文:mysql> show variables like '%character%';+--------------------------+----------------------------------------+| Variable_name | Value |+--------------------------+-----------

SpringMVC中使用@ResponseBody注解返回值,Ajax取得中文乱码解决方法

Spring使用AnnotationMethodHandlerAdapter的handleResponseBody方法, AnnotationMethodHandlerAdapter使用request header中"Accept"的值和messageConverter支持的MediaType进行匹配,然后会用"Accept"的第一个值写入 response的"Content-Type".一般的请求都是通过浏览器进行的,request heade

利用jQuery 解决URL请求参数有中文时出现乱码的问题

利用jQuery 解决URL请求参数有中文时出现乱码的问题 在开发的时候经常会碰到URL中请求参数含有中文的情况,这时如果在前台不作处理,直接在后台利用request.getParameter()拿对应的参数值就会出现中文乱码. 这时可以先利用jQuery对对应中文进行encodeURI(),例子如下: 前台对应代码 <!--省畋无关代码--> <input type="button" id="submitA" value="重发短信&q

[转] linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决,Linux使用退格键时出现^H解决方法

[From] https://www.zmrbk.com/post-2030.html https://blog.csdn.net/suifengshiyu/article/details/40952771 我的理解是,如果出现如题所描述的问题,这是因为使用了不同的shell程序和对应的stty设置对应关系所综合作用的结果. 这是/bin/sh里面stty -a命令输出的信息: $ stty -a speed 38400 baud; rows 43; columns 209; line = 0;

mysql导入导出数据中文乱码解决方法小结

inux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如下面的代码: 复制代码 代码如下: mysqldump -uroot -p --default-character-set=utf8 dbname tablename > bak.sql 那么导入数据的时候也要使用--

jQuery中ajax的使用与缓存问题的解决方法

jQuery中ajax的使用与缓存问题的解决方法 1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果 POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的) 防止 GET 的 等幂 访问 就在URL后面加上 ?+new Date();,[总之就是使每次访问的URL字符串不一样的] 设计WEB页面的时候 也应该遵守这个

java createSQLQuery().list()返回日期格式没有时分秒的解决方法(转)

java createSQLQuery().list()返回日期格式没有时分秒的解决方法(转) J2EE项目中用使用Date类型不显示时分秒的解决方法 2010-04-21 21:35:00|  分类: java技术 |字号 订阅 昨天,阿堂(网络时空)在开发web项目中,发现提取Oracle中某几个Date类型的字段时,发现提出来的Date型值,只有“年月日”,没有“时分秒”显示出来,实际业务中,是要求页面上显示的日期要求是有“年月日是分秒”的.这里说明一下,我是用session.create

[转]mysql导入导出数据中文乱码解决方法小结

本文章总结了mysql导入导出数据中文乱码解决方法,出现中文乱码一般情况是导入导入时编码的设置问题,我们只要把编码调整一致即可解决此方法,下面是搜索到的一些方法总结,方便需要的朋友. linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如下面的代码: 代码如下: mys