본문 바로가기
  • 실행력이 모든걸 결정한다
Spring Series/Spring Framework

[Spring] RestTemplate 한글 깨짐 해결방법

by 김코더 김주역 2022. 6. 22.
반응형

RestTemplate에서 UriComponentsBuilder를 이용할 때 한글이 깨져서 전송되는 경우가 있다.

 

그 이유는 RestTemplate에서는 String 타입에 대해서 내부적으로 StringHttpMessageConverter를 사용하여 데이터를 변환하는데, StringHttpMessageConverter의 기본 문자셋이 ISO-8859-1이기 때문에 UTF-8로 변환을 해주어야 한다.

"UTF-8"을 직접 명시해줄 수도 있지만, encode() 메소드를 활용하여 UTF-8로 변환해줄 수도 있다. encode()는 인자가 없을 경우에는 기본 문자셋을 "UTF-8"로 지정한다.

RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity request = new HttpEntity(headers);

UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromHttpUrl(REQUEST_URL)
        .queryParam("key", key)
        .queryParam("q", text)
        .queryParam("source", "ko")
        .queryParam("target", targetLanguage);

ResponseEntity<String> responseEntity = restTemplate.exchange(
        //uriComponentsBuilder.toUriString(), -> 한글 깨짐!
        uriComponentsBuilder.build().encode().toUri(), // 한글 깨짐 현상 방지를 위해 encode() 호출
        HttpMethod.POST,
        request,
        String.class
);

 

반응형

'Spring Series > Spring Framework' 카테고리의 다른 글

[Spring] Scope Proxy  (0) 2022.06.23
[Spring] Prototype Bean  (0) 2022.06.23
[Spring] SpEL  (0) 2022.06.21
[Spring] Collection 타입을 XML로 작성하기  (0) 2022.06.21
[Spring] @Qualifier 이란?  (0) 2022.06.17

댓글