본문 바로가기

Tomcat

Tomcat 한글 설정


 

메소드

한글 처리 방법 

 GET

 server.xml 파일의 <Connector>태그에 URIEncoding="EUC-KR" 속성추가

 POST

 request.setCharacterEncoding("EUC-KR");


 

Tomcat 5.X이상의 버전에서는 톰켓의 conf폴더에 존재하는 server.xml파일에서

URIEncoding 속성으로 한글 설정이 가능합니다.

 

[URIEncoding 사용 예시] - server.xml 파일 내용중 일부

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->

<Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="8080" redirectPort="8443" URIEncoding="EUC-KR"/>

 

<!-- Define an AJP 1.3 Connector on port 8009 -->

<Connector enableLookups="false" port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="EUC-KR"/>

위처럼 Connector에 URIEncoding 속성을 설정할 경우 URL이나 FORM의

GET방식으로 전달되는 파라메터상의 문자열 인코딩이 EUC-KR방식으로 전달됩니다.

 

한글 처리의 경우 ClueRequestFilter 필터나 자체 제공되는 필터를 이용하는 방법도 있습니다.

 


<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filter.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>EUC_KR</param-value>
</init-param>
</filter> 
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> 

[Ajax를 위한 한글 처리]

Ajax 프로그래밍시 필수인 XMLHttpRequest 객체의 경우

웹 페이지 상단에 설정하는 인코딩 설정과 상관없이 무조건 UTF-8형식으로 요청합니다.

 

따라서, Ajax프로그래밍시에는 프로그램 자체를 UTF-8 형식으로 작성하는게 편합니다.

주의할 것은 코딩상에서 인코딩 타입이 UTF-8이라면 실제로 작성되는 파일 자체도

UTF-8형식으로 저장해야지 오류가 발생하지 않습니다.

 

UTF-8형식만 사용할 예정이라면 위 톰켓의 한글 설정을 EUC-KR이 아니라

"UTF-8"로 설정하면 기존처럼 데이터를 주고 받으면 되므로 코딩이 간단하게 해결됩니다.

부득이 서버 설정은 EUC-KR로 설정하고 일부 페이지만 UTF-8로 주고 받아야 한다면

전달하는 자바스크립트 측에서 encodeURIComponent()메소드로 엔코딩후 전달하면 됩니다.

Ajax의 경우 서버및 클라이언트 모두 UTF-8일 경우 정상 동작하지만

그외의 조합은 브라우저및 WAS등 상황에 따라서 의도한 대로 동작하지 않을 수 있습니다.

 

아래는 톰켓 5.5버전에서 server.xml에 euc-kr을 설정한 경우의 한글 처리 예제입니다.

b1.jsp에서 한글을 입후 b2.jsp 호출해서 정상적으로 출력되는지 확인하는 간단한 예제입니다.

[server.xml] Apache Tomcat 5.5.23 + JDK 1.6.0_02-b06

<Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="8080" redirectPort="8443" URIEncoding="EUC-KR"/>

 

<Connector enableLookups="false" port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="EUC-KR"/>

 

[b1.jsp]

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script language="javascript">

<!--

        function ddd(frm) {

                frm.name.value=encodeURIComponent(frm.name.value);

                frm.submit();

        }

-->

</script>

 

</head>

<body>

[GET]

<form name="ddd1" method="get" action="b2.jsp">

        <input type="text" name="name" value="한글">

        <input type="button" onclick="ddd(this.form)" value="전송">

</form>

 

[post]

<form name="ddd2" method="post" action="b2.jsp">

        <input type="text" name="name" value="한글">

        <input type="button" onclick="ddd(this.form)" value="전송">

</form>

 

[b2.jsp]

 

<%@ page contentType ="text/html; charset=utf-8"  %>

<pre>

name : <%=request.getParameter("name") %>

java.net.URLDecoder.decode : [<%=java.net.URLDecoder.decode(request.getParameter("name"),"UTF-8")%>]

</pre>

 

[실행결과]

 

 

위와같이 [GET]방식의 경우 입력란에 [한글]이라고 입력후 [전송]버튼을 클릭하면

아래처럼 한글이 제대로 처리되는것을 볼 수 있다.

 

 

클라이언트측에서 encodeURIComponent()메소드로 인코딩후 전송하였기때문에

전달받은 내용을 보면 한글로 출력되는게 아니라 %ED%95...처럼 출력됨을 알 수 있다.

인코딩된 데이터를 우리가 원하는 값으로 사용하기위해서는 디코딩 과정이 필요하다.

디코딩시에는 java.net.URLDecoder.decode 메소드를 이용하면된다.

UTF-8형식으로 디코딩을 해야하기때문에 인코딩 타입으로 "UTF-8"을 지정하면된다.

java.net.URLDecoder.decode(request.getParameter("name"),"UTF-8")


 

[참고] 메모장에서 UTF-8 파일 작성 방법

 

작성하려는 문서가 UTF-8형식이라면 반드시 파일을 저장시 인코딩 타입을 "UTF-8"로 저장해야한다.

메모장을 이용할 경우 그림처럼 인코딩 타입에서 "UTF-8" 선택하면된다.

그외의 편집 프로그램들은 각 프로그램의 메뉴얼을 참고하기 바란다.

 

 퍼왔어요. 

원본 위치 <http://yoo7577.dev4u.net/study/tomcat/02_Setting_Kor/02_Setting_Kor.html>

'Tomcat' 카테고리의 다른 글

PermSize 확장  (0) 2012.07.16
톰캣 디비풀 클린옵션  (0) 2010.04.12
Tomcat 6.0 서블릿 로딩 설정  (0) 2010.04.12