Ajax로 호출한 다음, 결과값을 alert으로 한글을 띄우려는데
자꾸 ???? ???? 로 나오는 것이었다.
서버 코드
@RequestMapping(value = "/add")
public @ResponseBody String add() {
return "성공했음";
}
javascript 코드
$.ajax({
url : '/add'
, success : function(data) {
alert(data);
}
});
얼럿 결과: ????????
구글신을 통해 여러가지 방법을 시도해봤다.
1) jsp상단에 추가
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
이래도 안됨
2) ajax 코드에 추가하고
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
서버에서 스트링을 UTF-8로 디코딩함
이래도 안됨
3) applicationContext.xml에 메시지컨버팅에 옵션을 넣음
<bean class="org.springframework.http.converter.StringHttpMessageConverter" >
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
이래도 안됨
4) 서버에서
String message = new String(message.getBytes("ISO-8859-1"), "UTF-8");
캐릭터 인코딩함
이래도 안됨
서버코드 안에서 찍어보면 분명 한글이 보이는데 얼럿만 띄우면 물음표다.;;
4번을 적용해보고 모든걸 다 적용해본 결과
마지막에 메시지컨버터에서 결국 ISO-8859-1 charset으로 덮어써버리는 것이었다.
최종적인 해결 방법!!!
@RequestMapping(value = "/add", produces = "application/text; charset=utf8")
public @ResponseBody String add() {
return "성공했음";
}
produces = "application/text; charset=utf8"
@ResponseBody를 통해 내릴 때 명시적으로 produces를 사용해서 utf-8로 인코딩을 해주면
드디어 UTF-8로 인코딩 된 값이 내려간다~!!
json을 내리는 경우라면 application/json; 으로.
'개발 > Spring' 카테고리의 다른 글
@PathVariable 여러개 주소 못찾는 경우 (0) | 2016.09.29 |
---|---|
SpringFramework를 이용한 파일 다운로드 (0) | 2015.04.13 |
[에러] type parameters of T cannot be determined;,.,, (1) | 2014.11.06 |
[Spring] Service 객체에서 초기화 하는 init 메소드 만들기 (2) | 2014.05.15 |
[Spring MVC + Maven] Project 생성하기 (3) | 2013.09.20 |