반응형
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 |
댓글