음성 합성 (카카오 뉴톤) rest api 호출시 인코딩 문제

환경: Windows10 64, visual studio 2010 c++ mfc

현재 MFC C++ 에서 libcurl 라이브러리를 이용해서 음성합성(뉴톤) REST API를 호출을 하려고 합니다.

개발 가이드의 예제는 우분투에서 curl 을 이용하여 테스트하였더니 문제없는 것을 확인 하였습니다.

문제는 Windows 10 에서 curl(cmd,power shell) 그리고 visual studio 2010 c++ 코드상에서 libcurl로 요청을 하는데 전송시 인코딩에서 문제가 있는 것 같습니다.

뉴톤 API 서버가 http header 중 Content-Type 부분에서 반드시 application/xml 로 고정해야지만 호출이 되는 것 같습니다.
" Content-Type : application/xml ; charset = utf-8" 이런식으로 charset을 지정하려고 하면 항상 응답에
application/xml 만을 허용한다고 오류가 날라오더군요.

문제는 libcurl 이 Content-type 에서 charset 을 지정해주지 않으면 ISO-8859-1 인코딩을 디폴트로 생각하고 보내는 것 같은데 우분투는 이부분에서 UTF-8 인 것 같구요.

Content-type을 application/xml 로 지정하고, 바디내용중 xml 선언부에서 encoding=“ISO8859-1” 로 변경시 정상 동작합니다만. iso-8859-1 로 전송 한지라 한글을 읽지 못하고 mp3들어보면 이상한 말을 하고있습니다.

결론을 말씀드리자면

  1. 카카오 뉴톤이 Content-type에서 charset 을 허용하지 않는 이유가 무엇인가요?
  2. 그러면 libcurl로 API 요청시 header에 charset 을 지정하지 않고도 인코딩을 UTF-8 로 지정 할 수 있는 방법은 없을까요?
  3. 이문제를 해결할 다른 방법은 없을까요?

다음 이미지는 API 요청 코드의 일부 입니다.

코드2

코드1