標籤: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代碼
- /**
- * 添加一個cookie值
- * @param name 名稱
- * @param value 值
- * @param time cookie的有效期間
- * @param response 儲存cookie的對象
- */
- public static void setCookie(String name, String value, Integer time,HttpServletResponse response) {
- try {
- //關鍵點
- value = URLEncoder.encode(value,"UTF-8");
-
- } catch (UnsupportedEncodingException e) { }
- Cookie cookie = new Cookie(name, value);
- cookie.setPath("/");
- cookie.setMaxAge(time);
- response.addCookie(cookie);
- }
-
- /**
- * 根據name值,從cookie當中取值
- *
- * @param name 要擷取的name
- * @param request cookie存在的對象
- * @return 與name對應的cookie值
- */
- public static String getCookie(String name, HttpServletRequest request) {
- Cookie[] cs = request.getCookies();
- String value = "";
- if (cs != null) {
- for (Cookie c : cs) {
- if (name.equals(c.getName())) {
- try {
-
- //關鍵點
- value = URLDecoder.decode(c.getValue(),"UTF-8");
-
- } catch (UnsupportedEncodingException e) {
- }
- return value;
- }
- }
- }
- return value;
-
- }
轉自:http://amcucn.javaeye.com/blog/403857
Control character in cookie value, consider BASE64 encoding your value-Cookie儲存中文出錯[轉]