1. 程式人生 > >Java servlet中cookie中文亂碼解決

Java servlet中cookie中文亂碼解決

由於之前出現錯誤:java.lang.IllegalArgumentException: Control character in cookie value or attribute.

是編碼問題造成的。

故先在寫入cookie時進行編碼:URLEncoder.encode(name, "utf-8");
再在從cookie中讀出時解碼:URLDecoder.decode(co.getValue(), "utf-8");

之前寫入cookie的程式碼:

//將name儲存到cookie中
Cookie nameCookie=new Cookie("userName",name);
//新增cookie
response.addCookie(nameCookie);

之前讀取cookie的程式碼:
for (Cookie co : cookies) {
                String cookieName = co.getName();
                if (cookieName.equals("userName")) {
                    name = co.getValue();
                }
            }

更改後寫入cookie的程式碼:
//將name儲存到cookie中
String urlName=URLEncoder.encode(name, "utf-8");
Cookie nameCookie=new Cookie("userName",urlName);
//新增cookie
response.addCookie(nameCookie);

更改後讀取cookie的程式碼:

for (Cookie co : cookies) {
                String cookieName = co.getName();
                if (cookieName.equals("userName")) {
                    name =  URLDecoder.decode(co.getValue(), "utf-8");
                }
            }