在開發過程中,我採用 Cookie 存儲了一些中文字符,但是讀取的時候老是爲空,最後感覺是編碼問題,就自己手動搜了下,最後解決了,在這裏分享給大家。
存儲時候進行轉碼
//對含有中文字符的Cookie進行轉碼
String data = java.net.URLEncoder.encode(request.getParameter("data"),"UTF-8");
//存儲Cookie
Cookie cookie = new Cookie(request.getParameter("currentTime"), data );
//設置Cookie存活時間
cookie.setMaxAge(5);
//將Cookie添加到本地
ServletActionContext.getResponse().addCookie(cookie);
請注意:一定要採用 UTF-8,本人採用 GBK 依然存在問題
讀取的時候進行解碼
//獲取 request 對象
request = ServletActionContext.getRequest();
// 獲取 Cookie 數組
Cookie[] cookies = request.getCookies();
String param = null;
// 遍歷數組,得到數據
for(Cookie cookie : cookies){
if(cookie.getName().equals(request.getParameter("currentTime"))){
param = cookie.getValue();
//進行解碼
param = URLDecoder.decode(param, "UTF-8");
}
}
總結:主要就是以下兩個步驟:
- 對存入 Cookie 中的數據進行編碼
- 從 Cookie 中的數據解碼