톰캣 환경에서 JSP 로 한글을 처리하다 보니, 한글 처리가 잘 안되는 경우가 있어서, 경우에 따라 한글 처리 여부를 정리한다.
1.톰캣 server.xml 설정, ( 현재 사용중인 connector 섹션에 URIEncoding="euc-kr" 속성 추가 여부
2.JSP에서 request.setCharacterEncoding("euc-kr"); 사용여부
소스 상단에 <%@ page contentType="text/html;charset=euc-kr" %> 문은 항상 포함되어 있다.
3. HTML 문서의 Method 사용 방식 : GET, POST
위 설정의 조합에 따라서 아래와 같은 결과를 얻었다.
톰캣 Server.xml 설정<o:p></o:p> (사용하는 connector 섹션에 URIEncoding=”euc-kr” 속성 추가 여부)<o:p></o:p> |
JSP 소스에서<o:p></o:p> request.setCharacterEncoding(“euc-kr”); 사용 여부<o:p></o:p> |
Method 에 따른 한글 정상 표시 여부<o:p></o:p> | |
GET<o:p></o:p> | POST<o:p></o:p> | ||
추가 한 상태<o:p></o:p> | 사용<o:p></o:p> | O<o:p></o:p> | O<o:p></o:p> |
미사용<o:p></o:p> | O<o:p></o:p> | X<o:p></o:p> | |
추가 안한 상태 | 사용<o:p></o:p> | X<o:p></o:p> | O<o:p></o:p> |
미사용<o:p></o:p> | X<o:p></o:p> | X<o:p></o:p> |
서버 설정하고, JSP 소스에 명시 해 주는 것이 가장 명확한 것 같다.
다른 방법도 있다.
String name = request.getParameter("name");
out.println("이름 : " + new String(name.getBytes("8859_1"), "euc-kr"));
JSP 소스에서 파라미터로 넘어온 값을 받아서 새로운 String 을 생성하여 출력하는 방법이다.
서버, JSP 설정에 상관없이 한글이 정상적으로 표시된다.
위 내용은 다음과 같이 함수로 만들어서 사용할 수도 있다.
public String NormalKorean(String str) {
try
{
String newStr;
newStr = new String(str.getBytes("8859_1"), "EUC-KR");
}
catch (UnsupportedEncodingException e)
<FONT color="#333333"> {
}
return newStr ;
}
</FONT>
댓글