在Java Servlet中,當使用Cookie來存放中文(格式為UTF-8),會出現以下錯誤
java.lang.IllegalArgumentException: Control character in cookie value or attribute.
原因是中文字串中包含一些不合法的字元(character)。若要能正確將中文儲存於cookie,則可先用URLEncoder.encode()
將中文編碼後在儲存於cookie,之後從cookie取出時再用URLDecoder.decode()
將被編碼的字串還原成原來的中文字串,儲存時如下...
String chineseName = "王大明";
String encodedName = URLEncoder.encode(chineseName, "UTF-8");
Cookie cookie = new Cookie("name", encodedName);
菜鳥工程師肉豬
從Cookie取出編碼字串並解碼...
Cookie[] cookies = request.getCookies(); // 取得所有的cookie
String name = null;
if(cookie.getName().equals("name")){
name = cookie.getValue();
}
String decodedName = URLDecoder.decode(name, "UTF-8"); // 將被編碼的文字解碼還原成中文
沒有留言:
張貼留言