Servlet 한글문자 실행

MIN·2023년 9월 17일
0

Servlet/JSP

목록 보기
5/21
post-thumbnail
이 글은 유튜버 뉴렉처님의 강의를 공부한 내용을 토대로 작성한 글입니다.
혹시 잘못된 내용이 있을 시 댓글로 알려주시면 감사하겠습니다 ^U^

코드에 한글을 넣고 이를 출력하게 하면 브라우저에서 ??로 나오거나 아니면 이상한 문자가 나오면서 한글이 깨지게 된다.

한글이 깨지는 이유는 2가지 이다.

1. 서버에서 한글을 지원하지 않는 코드로 인코딩함

이클립스 자체 설정 인코딩이 한글을 해석할 수 없는 문자코드로 되어있는 경우다. 한글은 2byte씩 묶여서 클라이언트에게 전달되어야 하는데 1byte씩 전달되면 브라우저에서는 한글을 해석할 수 없게된다.
이 경우 한글이 '?'로 나온다.

2. 서버에서는 잘 설정되어있지만 브라우저가 그 문자코드를 다른 문자코드로 잘못 해석하는 경우

서버에서는 UTF-8로 문자코드를 잘 설정해서 보냈지만 브라우저에서 받은 문잔코드를 UTF-8이 아닌 다른 문자코드로 해석을 하면 한글이 이상한 문자로 나온다. ex) 꽥뙓


이렇듯 한글이 깨지지 않게 하려면 2가지 설정을 해주어야 한다.

  • 이클립스에서 보내는 문자코드를 UTF-8로 설정하기
  • 실행되는 브라우저에서 문자코드를 UTF-8로 인식할 수 있도록 설정하기

@WebServlet("/hihi")
public class MinJ extends HttpServlet{
	
	@Override
	protected void service(HttpServletRequest requst, HttpServletResponse response) 
			throws ServletException, IOException {
		
		response.setCharacterEncoding("UTF-8");	// 응답해서 보내는 문자타입이 UTF-8
		response.setContentType("text/html; charset=UTF-8"); // 브라우저에게 해석할 문자가 UTF-8임을 알려줌
															 // & 브라우저에게 이 문서는 text/html이라고 알려줌
		
		
		PrintWriter out = response.getWriter();
        out.println("안녕안녕 서블릿~!");
        }
    }
    

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

위 첫 번째 코드가 보내는 문자코드를 설정한 것이고
두 번째 코드가 실행되는 브라우저의 문자코드를 설정한 것이다.

(두 번쨰의 text/html은 실행되는 브라우저에 이 문서가 text/html이라고 알려주는 것이다.)


이제 한글이 깨지지 않을 것이다!

profile
기초부터 시작하는 감쟈 ※ 소개글 확인해주세요!! ※

0개의 댓글