servlet 读写cookie遇到java.lang.IllegalArgumentException: Control character in cookie value or attribute

本文介绍了在Java Web应用中使用Cookie存储中文字符时遇到的乱码问题,并提供了解决方案,包括对Cookie值进行UTF-8编码和解码的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cookie读取中文导致的错误 重点看下面第一行错误信息

  1. java.lang.IllegalArgumentException: Control character in cookie value or attribute.
    org.apache.tomcat.util.http.LegacyCookieProcessor.needsQuotes(LegacyCookieProcessor.java:412)
    org.apache.tomcat.util.http.LegacyCookieProcessor.generateHeader(LegacyCookieProcessor.java:284)
    org.apache.catalina.connector.Response.generateCookieString(Response.java:940)
    org.apache.catalina.connector.Response.addCookie(Response.java:888)
    org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:392)
    servlet.cookieDemo.doPost(cookieDemo.java:27)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

原因
虽然在java文件和jsp文件的字符编码是utf-8,但是在jsp中读取写入Cookie时,仍然有乱码,Cookie处理中文时编码问题,中文采用的是Unicode编码,而英文采用的是ASCII编码,当Cookie保存中文的时候需要对中文进行编码,而且从Cookie中取出内容的时候也要进行解码.
解决办法只需要对其写入和独处都进行编码处理就OK啦
Cookie cookie = new Cookie(“name”,URLEncoder.encode(name, “utf-8”));//对value进行编码

URLDecoder.decode(cookie.getValue(),“utf-8”);//对cookie读的时候进行译码

有这两步应该没有什么问题了。在或者清空一下浏览器中的cookie后重新进行项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冬瓜螺旋雪碧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值