서블릿&JSP/뉴렉쳐 서블릿&JSP강의
[서블릿/jsp] 한글과 콘텐츠 형식 출력하기
째로스
2023. 6. 17. 09:18
1. 웹에서 한글 파일이 깨지는 이유
톰캣은 기본적으로 ISO-8859-1이라는 방식으로 인코딩하여 문자를 전송한다.
이는 1바이트씩 전송을 수행하는데, 한 글자에 2바이트인 한글은 바이트가 나뉘기때문에 문자가 깨지는 것이다.
또한 웹서버에서는 UTF-8이라는 형식으로 2바이트로 문자를 전송해도, 웹 브라우저에서 다른 인코딩 방식을 지니고 있으면 한글이 제대로 출력되지 않는 문제가 발생한다.
2. 해결 방법
@WebServlet("/hello2")
public class Nana extends HttpServlet{
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//UTF-8 형식으로 전송하는 것
response.setCharacterEncoding("UTF-8");
//웹 브라우저에 UTF-8 형식으로 읽으라고 하는 것
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
for(int i=0;i<100;++i)
{
out.println((i+1)+": 안녕 Servlet!! <br>");
}
}
}
response 매개변수를 통해 서버가 전송하는 형식과 웹 브라우저에게 읽으라고 하는 형식을 지정해준다.