본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/spring

[Spring] response 응답 한글 지원하도록 하기

by 미노드 2024. 2. 14.

Spring 으로 Response 를 테스트 하는 중에 request를 한글로 받았다면, 그대로 한글로 Response하는 방법을 정리해보려 합니다.

애플리케이션에서 받았을 때에도 한글이 나오는것은 확인되었으나,

응답을 postman에서 받았을 땐 한글이 깨져서 나옵니다.

이를 해결하기 위해선, 애플리케이션에서 response에 들어갈 헤더를 추가해줘야 했습니다.

@Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletInputStream servletInputStream = req.getInputStream();

        String message = StreamUtils.copyToString(servletInputStream, StandardCharsets.UTF_8);
        System.out.println("message : "+ message);

        HelloData helloData = objectMapper.readValue(message, HelloData.class); // json 형식 메시지를 객체형식으로 바로 매핑시키는게 가능.

        resp.setCharacterEncoding(String.valueOf(StandardCharsets.UTF_8)); // 한글지원하도록 응답 설정
        resp.getWriter().write(message);
    }
 
resp.setCharacterEncoding(String.valueOf(StandardCharsets.UTF_8));

resp.setCharacterEncoding("utf-8"));

resp.setHeader("Content-Type", "text/plain;charset=utf-8");  // Content-Type으로 넣더라도 한글깨짐없이 응답시킬 수 있습니다.

이 소스를 추가하고 다시 실행시켜보면 한글이 잘 응답되는 것을 확인할 수 있습니다.
헤더에 charset 을 지정해줘야 되는부분이 핵심으로 확인됩니다.