2017-08-15 15 views
0

リストをUTF-8にエンコードしてString形式で保存します。しかし、私はそれが{}: ...そしてより多くのシンボルがクッキー値にあることを見ます。ユニコード文字をCookieからデコードする方法

%7B%22evt%22%3A%5B%5D%2C%22exc%22%3A%5B%5D%2C%22tourQuantity%22%3A%221%22%2C%22tourId%22%3A%22067e61623b6f4ae2a1712470b63dff00%22%2C%22room%22%3A%7B%22accId%22%3A%226%22%2C%22roomTypeId%22%3A%225%22%7D%7D 

上記は、クッキーに格納された値です。

public ResponseEntity <ModelAndView> saveReservation(@RequestBody String reservation, HttpServletRequest request, 
    HttpServletResponse response) throws Exception { 
    Cookie cookie = new Cookie("tourReservation", URLEncoder.encode(reservation, "UTF-8")); 
    cookie.setMaxAge(24 * 60 * 60); 
    cookie.setPath("/tour/reservation"); 
    response.addCookie(cookie); 
    List <?> list = service.saveRes(reservation); 
    if (list.size() > 0) { 
    ......... 
    return new ResponseEntity <ModelAndView> (model, HttpStatus.OK); 
    } 
    return new ResponseEntity <ModelAndView> (new ModelAndView("tour"), HttpStatus.BAD_REQUEST); 
} 

リスト文字列を適切な形式で取得するにはどうすればよいですか?私もStringEscapeUtilsを使用しましたが、エラーjava.lang.IllegalArgumentException: An invalid character [34] was present in the Cookie valueがあります。

org.apache.commons.lang.StringEscapeUtils.unescapeJava(reservation)

答えて

2

そのまま残します。 JavaScriptでCookieの値を取得し、それをデコードするにはunescape(str)または decodeURIComponent(str)関数を使用します。

注:unescape()は推奨されていませんので、代わりにdecodeURIComponent()を使用してください。

関連する問題