안녕하세요. 번역 API를 사용하고 있는데요. 영어로 된 키워드들이 리스트로 넘어오면 받아서 번역해서 다시 리턴 시켜주는 방식인데 UTF-8 타입으로 변경 처리를 했는데 자꾸 문자가 깨져서요. localhost 에서 테스트 할 때는 제대로 한글로 나오는데 서버에 업로드 시켜서 http, https 상태에서 하면
이런식으로 노출되어서 아주 곤란한 상황입니다. 혹시 해결법을 알 수 있을까요?
@RequestMapping(value = "/translateAction.do")
public void translateAction(HttpServletResponse response,
@RequestParam("query") String query, ModelMap model)
throws Exception {
String rest_api_key = 앱 키;
String urlParameters = "query=" + query.toLowerCase()
+ "&src_lang=en&target_lang=kr";
byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8);
for (int i = 0; i < postData.length; i++) {
System.out.println(postData[i]);
}
HttpURLConnection conn = null;
BufferedReader in = null;
PrintWriter out = null;
try {
URL url = new URL(
"https://kapi.kakao.com/v1/translation/translate");
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Authorization", "KakaoAK " + rest_api_key);
conn.setRequestProperty("Content-Language", "utf-8");
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
wr.write(postData);
InputStream content = (InputStream) conn.getInputStream();
in = new BufferedReader(new InputStreamReader(content));
StringBuffer sb = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null) {
System.out.println("line = "+line);
sb.append(line);
}
response.setContentType("text/html;charset=utf-8");
out = response.getWriter();
out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.disconnect();
conn = null;
}
if (in != null) {
in.close();
in = null;
}
if (out != null) {
out.close();
out = null;
}
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
}
해당 action controller를 전문 첨부합니다.
빠른 답변 기다리겠습니다. 감사합니다.