티스토리 뷰
안녕하세요. 오늘은 스프링 프로젝트에서 ajax를 사용해서 json 또는 gson으로 데이터를 가져와서 화면에서 데이터를
출력해 줄때 한글로 된 데이터가 '?'와 같이 출력되면서 한글이 깨지는 현상이 있습니다.
이와 같은 현상이 발생했을때 해결 방안에 대해서 포스팅 하도록 하겠습니다.
(전제 조건 : 스프링 프레임워크 3.1 이상 버전 사용, 그 이하 버전에서는 다른 방법으로 해결해야됩니다.)
우선, ajax를 통해서 데이터를 가져오는 코드를 보겠습니다.
/** * gson 샘플 코드 */ @RequestMapping(value="/sample") @ResponseBody public String sample(HttpServletRequest request, HttpServletResponse response) throws Exception { ListsampleList = sampleService.getSampleList(); Gson gson = new Gson(); // Gson 사용 return gson.toJson(sampleList); // json으로 변환 후, 리턴 }
이렇게 사용해서 데이터를 화면상으로 가져오게 되면 한글 데이터들이 '?' 와 같이 나타나게 됩니다.
이러한 증상의 해결방안으로는 다음과 같이 코드 위에 있는 @RequestMapping 어노테이션의 속성 중 produces라는 것을 사용하면 됩니다.
다음과 같이 GET 방식과 POST 방식의 예시를 들어 보겠습니다.
<get 방식>
/** * gson 샘플 코드 */ @RequestMapping(value="/sample", method=RequestMethod.GET, produces="text/plain;charset=UTF-8") @ResponseBody public String sample(HttpServletRequest request, HttpServletResponse response) throws Exception { ListsampleList = sampleService.getSampleList(); Gson gson = new Gson(); // Gson 사용 return gson.toJson(sampleList); // json으로 변환 후, 리턴 }
<post 방식>
/** * gson 샘플 코드 */ @RequestMapping(value="/sample", method=RequestMethod.POST, produces="text/plain;charset=UTF-8") @ResponseBody public String sample(HttpServletRequest request, HttpServletResponse response) throws Exception { ListsampleList = sampleService.getSampleList(); Gson gson = new Gson(); // Gson 사용 return gson.toJson(sampleList); // json으로 변환 후, 리턴 }
(예제 코드상의 </sample> 이라는 글자는 무시하셔도 됩니다... 지워지지가 않네요)
위의 예시에서와 같이 produces="text/plain;charset=UTF-8"를 사용하여 응답 페이지에 대한 UTF-8 인코딩이 가능하여 한글 깨짐을 방지 할 수 있습니다.
이로써 gson 및 json 사용시 한글깨짐 현상 해결방법에 대해서 알아보았고, 포스팅으로 이걸로 마치도록 하겠습니다. :0
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday