스프링 레스트컨트롤러에서 리퀘스트매핑으로 GET request 처리하는데

json 형식 데이터가 패러미터로 넘어갈 때 한글 깨지는 문제 있어서 어제 엄청 고생했네

웹 페이지에서는 meta 태그로 캐릭터셋 처리 다 했는데

데이터 넘길 때 Ajax.get() 요걸로 넘기는데 여기서도 utf-8 로 넘기고 브라우저 개발자모드에서 네트워크 보니까 분명히

한글로 전달 잘 했는데 컨트롤러에서 한글을 처리를 못 하는거임

보니까 서버쪽 디폴트 캐릭터셋 문제같던데 web.xml 보니까 URI 인코딩 부분에서 UTF-8 이런 설정이 주석으로 막혀있더라고

이건 원래 톰캣 받을 때부터 이렇게 되어있던 거 같은데 이거 괜히 잘못 건드렸다가 나중에 문제될 거 같아서..

몇시간 끙끙거리다가 해결책을 찾아냈는데

결론은 클라이언트 쪽에서는 Ajax.get() 에서 데이터 보낼 때 한글 들어가는 부분을 encodeURI 로 감싸서 보내고

서버 쪽에서는 컨트롤러 리퀘스트매핑부분에서 java.net.URLDecoder.decode(String s, String enc) 요걸로 디코딩하면 되는 거였다

그냥 POST로 했으면 이런 문제 없는건데 GET 으로 왜 안 되나 계속 파다가 알아냈음

구글링하기 쉬우라고 영어, 한글 다 썼다..