cookie包含中文导致的问题
周五项目测试完毕没问题之后上线,上线之后发现有的账户登录不上
原因为,用来记录追踪用户的cookie中包含cookie。读取,写入时候发生异常。
异常大概是这个样子:
java.lang.IllegalArgumentException: Control character in cookie value or attribute.
at org.apache.tomcat.util.http.CookieSupport.isHttpSeparator(CookieSupport.java:193)
at org.apache.tomcat.util.http.CookieSupport.isHttpToken(CookieSupport.java:217)
at org.apache.tomcat.util.http.ServerCookie.appendCookieValue(ServerCookie.java:186)
at org.apache.catalina.connector..Response.generateCookieString(Response.java:1032)
at org.apache.catalina.connector..Response.addCookie(Response.java:974)
at org.apache.catalina.connector..ResponseFacade.addCookie(ResponseFacade.java:381)
at com.vcfilm.interceptor.service.AutologonService.setCookie(AutologonService.java:168)
at com.vcfilm.interceptor.service.AutologonService.saveLogonInfo(AutologonService.java:129)
at com.vcfilm.interceptor.service.AutologonService.saveLogonInfo(AutologonService.java:139)
at com.vcfilm.wechat.actioncommon.BaseAction.SaveSession(BaseAction.java:45)
at com.vcfilm.wechat.actioncommon.BaseAction.SetMember(BaseAction.java:191)
at com.vcfilm.wechat.member.MemberAction.logincheck(MemberAction.java:364)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
中文需要 URLEncoder.encode. utf-8
可参这篇文章 http://blog.csdn.net/newyear1988/article/details/7817066
加了之后发现还是有问题,写cookie的时候用des加密了,发现取cookie,getVal()之后用解密的时候异常,于是在捕获异常代码块直接返回了getVal()得到的值。
/**
* 从cookie中取值
* */
public String getCookieVal(HttpServletRequest request, String key){
Cookie[] cookies= request.getCookies();
if(null != cookies && cookies.length > 0){
for(Cookie c:cookies){
if(c.getName().equalsIgnoreCase(key)){
if(null != c){
try{
return URLDecoder.decode(c.getValue(), "utf-8");
}catch(Exception e){
e.printStackTrace();
return c.getValue();
}
}
}
}
}
return "";
} /**
* 保存值到cookie
* */
public void setCookie(String key, String val, int maxAge){
try{
val = URLEncoder.encode(val, "utf-8");
}catch(Exception e){
e.printStackTrace();
}
Cookie cookie = new Cookie(key, val);
if(maxAge > 0){
cookie.setMaxAge(maxAge);
}
cookie.setPath("/");
ServletActionContext.getResponse().addCookie(cookie);
}
cookie包含中文导致的问题的更多相关文章
- subprocess.Popen指令包含中文导致乱码问题解决
其实解决起来非常简单,如果了解到Windows中文系统编码为GB2312的话 只需将你包含中文的指令字符串编码为GB2312即可 cmd = u'cd 我的文档' cmd.encode('gb2312 ...
- 图片url中包含中文导致网络请求404
需要对其中的中文使用转换格式,注意不是整个url,如果是整个,"/"这个网络分隔符`也会被转换的 URLEncoder.encode("福利", "u ...
- Cocos2dx 代码中包含中文导致编译错误的问题解决方法
从网上下载一个cocos2dx的源码,是IOS版本的,我将其迁移到windows 7下 ,用VS2010编译,出现一堆的C2001错误: 1>d:\cocos2d-x-2.2.6\mygame\ ...
- 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间
生成二维码 /// <summary>/// 生成二维码/// </summary>public static class QRcodeUtils{private static ...
- Control character in cookie value, consider BASE64 encoding your value , java操作cookie遇到中文会报错的解决方案
项目当中用到cookie保存中文,但是会报如下错误: Control character in cookie value, consider BASE64 encoding your value 大概 ...
- ORA-00911: invalid character 包含中文报错
SQL在pl下正常执行在vs里报错ORA-00911: invalid character. 1.检查SQL末尾是否含有";" 去掉 2.sql包含中文报错 string sql ...
- am start的总结,-d参数的总结,以及python中传递内容包含中文及特殊字符&的解决方案
一.am start的内容的整理 主要包含以下内容:am start的常规操作及参数的含义,-d 参数的含义,以及如何在APK中设置参数获取 使用命令如下:adb shell am start -n ...
- ORACLE判别字段是否包含中文
在ORACLE数据库中如何查找那些字段里面包含中文的数据记录呢,有时候就是有这样的特殊需求,下面整理了一些判别字段中包含中文记录的几个方法 1:使用ASCIISTR函数判别 ASCIISTR函数说 ...
- SQL判断某列中是否包含中文字符、英文字符、纯数字 (转)
一.包含中文字符 select * from 表名 where 列名 like '%[吖-座]%' 二.包含英文字符 select * from 表名 where 列名 like '%[a-z]%' ...
随机推荐
- Java -- 在Eclipse上使用Spring
在.NET上用的VS.NET+Spring.net+Nhibernate,到了Java平台上,自然对应着Eclipse+Spring+Hibernate.上一篇文章介绍了如何在Eclipse上使用Hi ...
- 学习 Linux,101: 使用基本 SQL 命令
概述 在本教程中,将学习结构化查询语言 (SQL),包括: 使用基本 SQL 命令 执行基本数据操作 本教程将简要介绍您需要知道的与 LPI 102 考试相关的 SQL 概念. 回页首 数据库和 ...
- HTML报表日期格式不对 导致报错ORA-01861: 文字与格式字符串不匹配
PROCEDURE MAIN(ERRBUF OUT VARCHAR2, RETCODE OUT VARCHAR2, P_CUSTOMER_ID IN VARCHAR2, P_PERSON_ID IN ...
- js处理异常try{}catch(e){}
MXS&Vincene ─╄OvЁ &0000021─╄OvЁ MXS&Vincene MXS&Vincene ─╄OvЁ:今天很残酷,明天更残酷,后天很美好, ...
- spring多线程与定时任务
本篇主要描述一下spring的多线程的使用与定时任务的使用. 1.spring多线程任务的使用 spring通过任务执行器TaskExecutor来实现多线程与并发编程.通常使用ThreadPoolT ...
- Java虚拟机学习(1):体系结构 内存模型
一:Java技术体系模块图 Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代" ."非堆", 它用于存储虚拟机加载的类信息.常量.静态 ...
- (2) 深入理解Java Class文件格式(一)
好文转载:http://blog.csdn.net/zhangjg_blog/article/details/21486985 Class文件在Java体系结构中的位置和作用 在上一篇博客中, 大致讲 ...
- LR11启动卡修改
LR11启动卡修改 C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config <runtime>改为<r ...
- flex垂直居中
最近遇到一个令我绞尽脑汁的布局 T.T.T.T,分享下.重点--垂直居中. 布局说明:1. 场次为一场比赛 2. 比赛双方是交战的两个队伍 3. 一场比赛可以有多种玩法,所以场的每个玩法的布局的高度都 ...
- MVC区域使用
新建项目 Main: 添加一个MVC5控制器并添加index视图:(HomeController) Views/Home/Index.cshtml内容: @{ Layout = null; } < ...