解決 Cookie 中文存儲異常

在開發過程中,我採用 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 中的數據解碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章