Control character in cookie value, consider BASE64 encoding your value-Cookie儲存中文出錯[轉]

來源:互聯網
上載者:User

標籤:blog   http   java   io   strong   for   ar   資料   問題   

項目當中用到cookie儲存中文,但是會報如下錯誤:

Control character in cookie value, consider BASE64 encoding your value

 

大概意思是儲存到cookie當中的值存在控制字元,無法儲存。但實際上資料是不存在這種問題的。再看後面的那句話,好像是將要儲存的值進行了base64編碼,可能是因為中文在編碼時出現亂碼導致一些控制字元的出現。

 

解決方案:將要儲存的值進行URLEncoder.encode(value,"utf-8")編碼。

在提取時,同樣進行解碼:

 

Java代碼 
  1. /**  
  2.     * 添加一個cookie值  
  3.     * @param name 名稱  
  4.     * @param value 值  
  5.     * @param time  cookie的有效期間  
  6.     * @param response 儲存cookie的對象  
  7.     */  
  8.     public static void setCookie(String name, String value, Integer time,HttpServletResponse response) {   
  9.        try {   
  10.            //關鍵點   
  11.            value = URLEncoder.encode(value,"UTF-8");  
  12.   
  13.        } catch (UnsupportedEncodingException e) { }   
  14.        Cookie cookie = new Cookie(name, value);   
  15.        cookie.setPath("/");   
  16.        cookie.setMaxAge(time);   
  17.        response.addCookie(cookie);   
  18.    }   
  19.   
  20.    /**  
  21.     * 根據name值,從cookie當中取值  
  22.     *  
  23.     * @param name    要擷取的name  
  24.     * @param request cookie存在的對象  
  25.     * @return 與name對應的cookie值  
  26.     */  
  27.    public static String getCookie(String name, HttpServletRequest request) {   
  28.        Cookie[] cs = request.getCookies();   
  29.        String value = "";   
  30.        if (cs != null) {   
  31.            for (Cookie c : cs) {   
  32.                if (name.equals(c.getName())) {   
  33.                    try {   
  34.   
  35.                   //關鍵點     
  36.                     value = URLDecoder.decode(c.getValue(),"UTF-8");  
  37.   
  38.                    } catch (UnsupportedEncodingException e) {   
  39.                    }   
  40.                    return value;   
  41.                }   
  42.            }   
  43.        }   
  44.        return value;   
  45.   
  46.    }  

轉自:http://amcucn.javaeye.com/blog/403857

Control character in cookie value, consider BASE64 encoding your value-Cookie儲存中文出錯[轉]

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.