외부 API를 연동하는 작업을 하는데 응답을 받아오는 한글이 깨지는 오류를 발견하였다.
보통 자주 발견하는 InputStreamReader에 인코딩 형식 오류인 Charset.forName("UTF-8")
도 있는데 한글이 깨지는 이유를 찾던 중에,
OutputStream os = conn.getOutputStream(); -- OutputStream 객체 생성
os.write(body.getBytes()); -- request Body에 Data 셋팅
이런 식의 Request Body에 Data를 담기위해 OutputStream 객체를 생성하고 데이터를 셋팅하는 부분에서 인코딩을 지정해주지 않았음을 발견했다.
아래처럼 인코딩을 지정해주었다!
os.write(body.getBytes(StandardCharsets.UTF_8));
지금껏 잘 돌아가던건 뭘까...? 🤦
[Java 7 이상]
import java.nio.charset.StandardCharsets
val bytes = text.getBytes(StandardCharsets.UTF_8)
[Java 6]
import java.nio.charset.Charset
val bytes = text.getBytes(Charset.forName("UTF-8"))
이렇게하면 bytes에 "UTF-8"로 인코딩 된 텍스트가 포함된다.
다음에는 HttpURLConnection Request Header를 설정하는 방법도 알아보겠다 :)
참고: