서블릿&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 매개변수를 통해 서버가 전송하는 형식과 웹 브라우저에게 읽으라고 하는 형식을 지정해준다.