Java & Kotlin/Spring
결과값 리턴값이 String 인 경우 한글이 깨지는 현상 (설정 파일에서 인코딩을 지정해도 안될 경우)
전봉근
2022. 4. 26. 23:37
반응형
결과값 리턴값이 String 인 경우 한글이 깨지는 현상 (설정 파일에서 인코딩을 지정해도 안될 경우)
- 원인은 HTTP 메소드 컨버터의
StringHttpMessageConverter
에서 기본 옵션ISO-8859-1
을 발견
- 해결방법
String 이 아닌 다른 값으로 가공
(굳이 String 이 아닌 Response Model 클래스를 따로 만들어서 리턴하였음)- WebConfig 의 configureMessageConverters 오버라이딩하여 converter.setWriteAcceptCharset(false); 로 변경
@Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { StringHttpMessageConverter converter = new StringHttpMessageConverter(StandardCharsets.UTF_8); converter.setWriteAcceptCharset(false); //이거 설정 안하면 Accept-Charset에 대다수의 Encoding Type 리턴함 converters.add(converter); super.configureMessageConverters(converters); } }
- 우선순위가 가장 높은 ContentType 에 캐릭터셋 명시
HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.valueOf("application/json;charset=EUC-KR"); HttpEntity entity = new HttpEntity<>(content, headers); RestTemplate restTemplate = new RestTemplate(); restTemplate.exchange(apiUrl, HttpMethod.POST, entity, Response.class);
반응형