在學習當中碰到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);
}
}
}
這樣問題就解決了。