2009年8月10日 星期一

Control character in cookie value, consider BASE64 encoding your value

在例行性的查看log過程中看到這個exception
便開始著手解決這個問題

在網上搜索了一下
得到原因是
值含有控制字元所以無法保存到cookie裡
可能是中文字在編碼時出現亂碼導致有控制字符的出現

解決的方法就是存值跟取值都進行編碼的動作
public void addCookie(String name, String value)
{
int maxAge = 3600 * 24 * 30;
try{
if (value == null) {
maxAge = 0;
value = "";
}else{
value = URLEncoder.encode(value,"UTF-8");
}
}catch(Exception e){
}
Cookie cookie = new Cookie(name, value);
cookie.setMaxAge(maxAge);
cookie.setPath("/");

response.addCookie(cookie);
}

public String getCookie(String name)
{
String value = "";
Cookie[] cookies = request.getCookies();

if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
Cookie c = cookies[i];
if (c.getName().equals(name)) {
try{
value = URLDecoder.decode(c.getValue(),"UTF-8");
}catch(Exception e){
}
return value;
}
}
}

return value;
}

沒有留言:

張貼留言