반응형
웹 서비스를 개발하면서 charset은 정말 중요합니다. 클라이언트와 서버가 charset이 맞지 않으면 문자가 제대로 표시되지 않는 문제가 발생할 수 있습니다.
아래와 같이 사용자의 정보를 리턴하는 URL이 있다고 가정해봅시다.
@RestController
public class TestController {
@RequestMapping(name = "/test", produces = "application/json")
public User test(HttpServletRequest req) {
User user = new User();
user.setUserId("admin");
user.setUserName("홍길동");
return user;
}
}
- @RestController가 아닌 @Controller annotation을 사용할 경우 메서드 선언부에 @ResponseBody를 추가해야 합니다.
- produces = "application/json"대신 produces = MediaType.APPLICATION_JSON_VALUE를 사용할 수도 있습니다.
위 코드를 보면 produces = "application/json" 부분이 있는데 이렇게 설정하면 response header의 Content-Type에 application/json이 추가됩니다.
이 때, 응답을 받는 쪽에서 UTF-8을 원할 경우 오류가 발생하거나 문자열에 이상이 발생할 수 있습니다.
이 경우 다음과 같이 application.properties에 옵션을 추가하면 됩니다.
이 옵션들을 추가하면 response header의 값이 application/json --> application/json;charset=UTF-8로 변경되어 있는 것을 확인할 수 있습니다.
또한, request의 charset도 변경됩니다.
단, springboot의 버전에 따라 옵션이 달라집니다.
1. 이전 버전 설정
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
2. 변경된 설정
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true
다른 application.properties의 옵션을 확인하려면 아래를 참고하시면 됩니다.
728x90
반응형
'웹 개발' 카테고리의 다른 글
java reflection을 통해 class의 setter method를 호출하는 방법 (0) | 2021.12.13 |
---|---|
Spring Boot 시작 시, 코드 실행 (0) | 2021.12.11 |
Java에서 HashMap 복사하는 방법 (0) | 2021.12.10 |
비밀키(암호화 키)를 문자열로 변환 및 반대로 변환 (0) | 2021.12.07 |
javascript 뒤로가기 (0) | 2021.11.19 |