写了一个cookie的定义和获取,结果我输入中文后,页面报错

报错信息如下:

  1. type Exception report
  2.  
  3. message An exception occurred processing JSP page /demo1/page3.jsp at line 16
  4.  
  5. description The server encountered an internal error that prevented it from fulfilling this request.
  6.  
  7. exception
  8.  
  9. org.apache.jasper.JasperException: An exception occurred processing JSP page /demo1/page3.jsp at line 16
  10.  
  11. 13: </form>
  12. 14: <%
  13. 15: Cookie cookie=new Cookie("message","涓枃");
  14. 16: response.addCookie(cookie);
  15. 17: %>
  16. 18: </body>
  17. 19: </html>
  18.  
  19. Stacktrace:
  20. org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:575)
  21. org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
  22. org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
  23. org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
  24. javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
  25.  
  26. root cause
  27.  
  28. java.lang.IllegalArgumentException: Control character in cookie value or attribute.
  29. org.apache.tomcat.util.http.CookieSupport.isHttpSeparator(CookieSupport.java:205)
  30. org.apache.tomcat.util.http.CookieSupport.isHttpToken(CookieSupport.java:229)
  31. org.apache.tomcat.util.http.ServerCookie.appendCookieValue(ServerCookie.java:185)
  32. org.apache.catalina.connector.Response.generateCookieString(Response.java:1054)
  33. org.apache.catalina.connector.Response.addCookie(Response.java:996)
  34. org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:380)
  35. org.apache.jsp.demo1.page3_jsp._jspService(page3_jsp.java:97)
  36. org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
  37. javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
  38. org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
  39. org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
  40. org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
  41. javax.servlet.http.HttpServlet.service(HttpServlet.java:731)

解决方案:cookie也要转码的

定义一个cookie:

  1. <%@page import="java.net.URLEncoder"%>
  2. <%@ page language="java" contentType="text/html; charset=UTF-8"
  3. pageEncoding="UTF-8"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>page3</title>
  9. </head>
  10. <body>
  11. <form action="page3.jsp">
  12. <input type="text" name="text" value=""/>
  13. <input type="submit" name="提交"/>
  14. </form>
  15. <%
  16. //转码
  17. Cookie cookie=new Cookie("message",URLEncoder.encode("中文", "utf-8"));
  18. response.addCookie(cookie);
  19. %>
  20. </body>
  21. </html>

page4.jsp(获取cookie)

  1. <%@page import="java.net.URLDecoder"%>
  2. <%@page import="java.net.URLEncoder"%>
  3. <%@ page language="java" contentType="text/html; charset=UTF-8"
  4. pageEncoding="UTF-8"%>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  9. <title>page4</title>
  10. </head>
  11. <body>
  12. <%
  13. String text = request.getParameter("text");
  14. out.print("text------------->"+text);
  15. Cookie[] cookies=request.getCookies();
  16. if(cookies!=null){
  17. for(Cookie cookie:cookies){
  18. if(cookie.getName().equals("message")){
  19. //cookie解码
  20. out.print("cookie value------>"+URLDecoder.decode(cookie.getValue(), "utf-8"));
  21. }
  22. }
  23. %>
  24.  
  25. </body>
  26. </html>

解决Cookie乱码问题的更多相关文章

  1. 解决Cookie乱码

    在Asp.net的HttpCookie中写入汉字,读取值为什么全是乱码?其实这是因 为文字编码而造成的,汉字是两个编码,所以才会搞出这么个乱码出来!其实解决的方法很简单:只要在写入Cookie时,先将 ...

  2. Jsoup获取网页内容(并且解决中文乱码问题)

    1. 根据连接地址获取网页内容,解决中文乱码页面内容,请求失败后尝试3次 private static Document getPageContent(String urlStr) { for (in ...

  3. 解决cookie跨域访问

    一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...

  4. 增加UBUNTU字符集 解决中文乱码问题

    对GBK,GB2312,GB18030字符集的支持是UBUNTU中文乱码的罪魁祸首,其实我们可以在保持UTF-8为默认编码的条件下添加对这几个编码的支持,以解决中文乱码问题. 我想这个问题肯定有其他人 ...

  5. Sublime Text 2—解决中文乱码

    Sublime Text 2是一个非常棒的代码及文本编辑器,绿色小巧.速度飞快,跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮.代码补全等,有着许多其他编辑器没 ...

  6. zabbix解决中文乱码问题(没有测试成功)

    zabbix解决中文乱码问题 1.在windows系统中找一个自己喜欢的字体,这里我们用:msyh.ttf 2.将字体上传至/var/www/html/zabbix/fonts目录下 [root@za ...

  7. Spring项目解决Post乱码

    Java EE解决Post乱码:在web.xml中加入: <filter> <filter-name>encodingFilter</filter-name> &l ...

  8. 二招解决php乱码问题

    PHP的乱码问题已经说了N+1遍了,但还是经常看到新手不知道该如何解决php乱码问题,在此本人再重新给总结一下,希望对新手有点帮助 php网页出现乱码一般是在建立数据库时用的编码和php网页的编码不同 ...

  9. 利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码

    利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码 2014-07-31 12:53 1047人阅读 评论(0) 收藏  ...

随机推荐

  1. Qt中的qreal

    在桌面操作系统中(比如Windows, XNix等)qreal其实就是double类型:而在嵌入设备系统中,qreal则等同于float 类型.

  2. 奇怪的Js时间计算方法,跨多个月后出现1天的误差

    在项目中要求用计算两个时间相差的天数,通俗的说就是两个时间 相减, 我的方法 先把两个时间转成相应的毫秒,相减后,再除以(1000 * 60 * 60 * 24) 就可以得到对应天数,但天数会比实际少 ...

  3. js基础知识温习:构造函数与原型

    构造函数 构造函数主要用于初始化新对象.按照惯例,构造函数名第一个字母都要大写. 构造函数有别于其它函数在于它使用new操作符来调用生成一个实例对象.换句话说,如果一个函数使用new操作符来调用,则将 ...

  4. Matlab和simulink数据的保存和读取

    文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入.保存工作区可以通过菜单进行,也可以通过命令窗口进行. 1. 保存整个工作区 选择Fil ...

  5. [HDOJ5445]Food Problem(优先队列优化多重背包)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5445 题意:多重背包 分析:f[i][j]=max(f[i-1][j-k*w[i]]+k*v[i]) 将j ...

  6. extjs store的操作

    先来个声明,看着不错,贴过来的,没都测试过. Store.getCount()返回的是store中的所有数据记录,然后使用for循环遍历整个store,从而得到每条记录. 除了使用getCount() ...

  7. MVC 理解小谈

    1. 如何理解MVC MVC 是一种经典的设计模式,全名为 Model-View-Controller,即 模型-视图-控制器. 其中,模型 是用于封装数据的载体,其本质是一个普通的 Java Bea ...

  8. 链表的Java实现

    import java.lang.System; public class Hello { public static void main(String[] args) { LinkList List ...

  9. springmvc中实现quartz定时任务

    1.maven项目添加如下两个jar包,当然也需要相应的spring 的Jar <!-- Spring Quartz定时器 begin --> <dependency> < ...

  10. 【转】oracle数据库开发的一些经验积累

    1.不安装Oracle客户连接Oracle 8的方法  请将以下文件拷贝到运行文件所在目录 一.ODBC动态库 : ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc ...