If you cannot understand Korean Language, just see my code below.
This article contains solving encoding problem in RestAssured multipart encoding(Russian, Japanese, Korean... etc) by UTF-8. In summary, I can solve RestAssured encoding problem by using multipart() method with MultipartSpecBuilder, and set UTF-8 in MultipartSpecBuilder.
If you like this article, just make comment for me!
상황
RestAssured 로 Springboot 테스트를 수행하던 도중, multipart/form-data 로 데이터를 넘겨주어야 하는 상황이 있었습니다. 하지만, 한글을 써서 Spring MVC Controller 로 정보를 넘겨주는 중 한글이 깨지는 문제가 발생했습니다. 구글링을 통해 많은 상황을 보았고, 러시아어, 일본어 등 많은 알파벳을 제외한 글자가 인코딩이 깨지는 이슈를 발견했지만, 해결책이 아니었습니다. 그래서 직접 공식문서와 코드를 해부해 보았습니다.
영어는 깨지지 않고, 한글이 깨지는 것을 확인하니, 무조건 인코딩 문제일 것이라 확신했습니다.
원인파악
직접 multipart() method 를 본격적으로 해부해 보았습니다.
groovy 로 구현되어 있는 것을 확인할 수 있었습니다. 실행하면서 알아본 결과, multipart() 에 따로 charset 을 지정해 주지 않으면 UTF-8 이 아닌 다른 인코딩을 사용하고 있고, 한글 인식이 제대로 해당 인코딩에서 되지 않아 문제가 발생하고 있었습니다.
ISO-8859-1 이라는 글도 있었고, 다른 인코딩이 기본 multipart/form-data 인코딩 방식이라는 글을 본 적이 있는데, 아시는 분은 댓글 부탁드립니다!
어쨋든, 인코딩 방식이 달라 문제가 발생하고 있었고, 저는 임시방편으로 아래와 같은 방법으로 해결했습니다.
해결방안 - MultipartSpecBuilder 를 통해 charset 설정하기
좀 복잡해 보이는 방법일 수 있지만, 일단 임시방편으로 MultipartSpecBuilder 를 통해 해결할 수 있었습니다.
MultipartSpecBuilder 를 받는 multipart() method 가 charset 을 설정해 줄 수 있는 방식인 것 같습니다.
더 좋은 방법이 있으시다면, 공유 부탁드립니다!
도움되셨다면 좋아요 한번씩 부탁드립니다.