직면한 문제
최근에 Spring 애플리케이션을 작업하면서 이해할 수 없는 상황에 직면했습니다. 제가 사용하고 있는 한글 문자가 제대로 표시되지 않고, 의문표로 뒤덮여 버리는 현상이 나타났습니다. 특히 API 응답에서 한글로 된 메시지가 필요한데, 이 문자들이 온전하게 표현되지 않아 문제가 되었습니다.
문제의 원인
문제는 Spring 프레임워크가 HTTP 응답에 사용하는 기본 문자 인코딩 설정에 있었습니다. Spring Boot는 기본적으로 ISO-8859-1을 사용하는데, 이는 한글 문자를 다루기에 부적합합니다. 인코딩 불일치로 인해 원래 메시지가 알아볼 수 없는 기호로 변해버렸습니다.
해결 방법
이 문제를 해결하기 위해 WebMvcConfigurer를 확장하는 커스텀 WebConfig 클래스를 만들고, extendMessageConverters 메서드를 구현했습니다. 아래의 핵심 코드를 추가했습니다:
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
}
UTF-8 문자 집합을 가진 새로운 StringHttpMessageConverter를 컨버터 목록의 맨 앞에 추가함으로써, 제 애플리케이션이 한글 문자를 올바르게 해석하고 표시하도록 보장했습니다.
마치며
문자 인코딩 문제는 진단하고 해결하기가 까다로울 수 있으며, 특히 Spring과 같이 방대한 프레임워크에서는 더욱 그렇습니다. 하지만 올바른 설정과 문제의 근본 원인을 이해하면 이러한 문제를 원활하게 해결할 수 있습니다. HttpMessageConverter를 약간 조정함으로써 제 애플리케이션은 한글 문자를 제대로 처리할 수 있게 되었고, 현지 클라이언트에게 친화적인 API를 제공할 수 있게 되어 잠재적인 오해를 방지할 수 있었습니다.
'Framework > Spring' 카테고리의 다른 글
JPA에서 트랜잭션 처리 및 데이터베이스 격리 수준 (0) | 2024.07.19 |
---|---|
Spring Data JPA 이해하기: 주요 구성 요소와 어노테이션 (0) | 2024.07.19 |
JPA 이해하기: 동작 원리와 핵심 구성 요소 (0) | 2024.07.19 |
[MacOS] Spring Boot 애플리케이션에서 SSL 인증서 설정하기: keystore.p12 파일 생성 및 구성 (0) | 2024.04.22 |
Spring Boot 웹 애플리케이션에서 특수 문자 오류 해결하기: java.lang.IllegalArgumentException: Invalid character found in the request target 문제 접근법 (1) | 2024.04.03 |