이번 시간에는 jsp 한글깨짐 해결방법에 대해서 알아보겠습니다.
일반적으로 웹개발시 jsp 데이터를 제공하고 java단에서 이 데이터를 처리하게 됩니다.
하지만 JSP의 페이지 인코딩이 EUC-KR일 경우 전달한 값이 컨트롤러 즉 JAVA단에서 한글 깨짐이 발생하게 됩니다.
이는 한글 처리 부분에서 인코딩 타입이 맞지 않기 때문에 문제가 생기는데요. 그래서 이를 해결 하는 방법을 소개해 드리겠습니다.
한글깨짐 예제
<body> <form action="action" method="post"> <input type="text" name="value1" value="우리나라"> <input type="submit" value="전송"> </form> </body>
일단 파라미터로 한글이 전송되는지 테스트 해보겠습니다.
폼 부분에 text박스에 한글을 넣고 전송해 봅니다.
위와 같이 한글을 넣고 전송을 눌러줍니다.
public class korean extends HttpServlet{ @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println(req.getParameter("value1")); } }
그리고 넘겨진 파라미터를 콘솔에서 출력해 보니 역시 다음과 같이 한글이 깨져버렸습니다.
해결 방법
req.setCharacterEncoding("EUC-KR");
이 경우 인코딩 타입을 바꿈으로써 해결할 수 있습니다.
다음의 메소드를 해당 클래스 상단이나 값을 출력하기 전에 써놓으시면 됩니다.
JAVA 컨트롤러 단에서 캐릭터인코딩을 EUC-KR로 변경하고 다시 WAS을 구동하니 한글 출력이 정상적으로 되었습니다.
String result = new String(req.getParameter("value1").getBytes("8859_1"), "euc-kr");
또한, 이 방법외에도 위의 문구와 같이 getBytes 메소드를 사용하여 해결하는 방법도 있습니다.
위와 같이 java나 jsp 한글깨짐 현상이 발생하였을 경우 setCharacterEncoding을 이용하여 문제를 해결할 수 있습니다. 다음시간에는 Spring 사용시 한글깨짐 현상을 간단하게 해결하는 시간을 갖도록 하겠습니다.
답글 남기기