[JSP] setCharacterEncoding , setContentType

개발 · 2021. 11. 10.

 

etc-image-0
JSP

오랜만에 블로그에 글을 쓴다.. 간단한 정리 글 이긴하지만 다시 천천히 블로그에 글을 올려야겠다.

회사에서 jsp로 구성된 proxy를 통해서 ajax 통신을 해야하는 일이 있다. 지금 업무 가운데 하나가 링크 미리보기를 만들고 있는데 그 과정에서 jsp에 proxy 서버를 만들어서 통신해야하는데 분석을 진행하면서 정리할겸 글을 작성한다.


requset.setCharacterEncoding("utf-8")

GET,POST 방식을 사용할때 requset.setCharacterEncoding("utf-8")은 꼭 필요하다. 

 

GET 방식으로 보내진 한글은 톰캣이 기본적으로 UTF-8 문자코드가 적용이 되어 있어서 자동으로 한글처리를 해주기 때문에 한글이 깨지지 않는다.

 

POST 방식으로 보내는 값이 한글일 경우 깨지지 않고 전달하기 위해 사용하는것이

requset.setCharacterEncoding("utf-8") 이다.

 

response.setCharacterEncoding("utf-8")

화면에 데이터를 출력하기 위해서는 out.print를 사용하는데 out.print(한글)을 한다면 출력되는 것이 ???와 같은 물음표가 출력이 된다.

 

이러한 문제점을 해결하기 위해서 response.setCharacterEncoding("utf-8"); 을 추가한다.

 

response.setContentType("text/html; charset=utf-8")

response.setCharacterEncoding("utf-8"); 만 사용하면 한글은 나오지않고 이상한 한글들이 출력이 된다.

브라우저마다 기본적으로 문자코드를 해석하는 default 값이 다르기 때문인데, 브라우저에게 utf-8 문자 코드를 사용한다는 코드를 작성해야한다.

 

그러한 코드가 바로  response.setContentType("text/html; charset=utf-8") 이다.