網頁

2017/8/17

Java Servlet Cookie儲存中文

在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"); // 將被編碼的文字解碼還原成中文

沒有留言:

張貼留言