[질문] jsp질문: tagfile 에서 include한 대상의 encoding이 깨지는 문제를 어떻게 해결하는지요?

1,097 views
Skip to first unread message

Sewon Ann

unread,
Sep 8, 2012, 9:29:24 AM9/8/12
to ks...@googlegroups.com
안녕하세요, 오랫만에 ksug에 질문을 올립니다. 비록 스프링이 아니라 jsp 관련 내용인데 너그러이 용서를 바랍니다. m(_ _)m

include 지시어를 사용할 때 대상 파일의 encoding이 utf-8로 잘 인식되질 않는데 혹시 이 부분에 대한 해결책을 알고 계신지요.

테스트한 코드는 다음과 같습니다.

1. WEB-INF/tags/includeExample.tag

<%@ tag pageEncoding="utf-8" %>
<%
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("utf-8");
%>
안녕!
<%@ include file="included.html"%>
<%@ include file="included.tagf"%>

2. WEB-INF/tags/included.tagf

<%
    out.print("included.tagf의 내용");
%>

3. WEB-INF/tags/included.html

<table>
<tr> 
    <td><b>메뉴</b></td>
</tr>

위 내용을 가지고 custom tag를 출력해보면  includeExample.tag 자체의 한글은 잘 출력이 되는데, included.tagf 와 included.html 의 내용은 인코딩이 깨져서 들어갑니다.
included.tagfì ˜ ë‚´ìš© 
이런식으로요.

includeExample.tag 를 해석해서 만들어낸 java 클래스 소스를 봐도 include 지시어로 include한 부분은 아예 인코딩이 깨져서 들어가네요.
생성된 코드의 doTag() 메서드 내부에 이런 식으로 코드가 들어갑니다.

out.print("included.tagfì ˜ ë‚´ìš©");

혹시나 해서 tomcat 실행할 때 -Dfile.encoding=UTF-8 도 주고, 톰캣의 web.xml 중 org.apache.jasper.servlet.JspServlet 밑에 다음 코드도 추가해봤지만 효과가 없네요.
      <init-param>
         <param-name>fileEncoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>

물론 모든 파일의 파일 인코딩은 utf-8로 줬습니다.

include한 대상 파일들 마다 맨 위에 <%@ tag pageEncoding="utf-8" %> 를 명시하니 해결은 되긴 했는데, 이렇게 하면 tagfile 내부에서 include하지 않고 jsp 등에서  include할 경우엔 오류가 날 것 같아 이렇게 해결하기도 깨림찍하네요.

혹시 해결방법을 알려주시면 고맙겠습니다.

KwonNam Son

unread,
Sep 8, 2012, 10:01:43 AM9/8/12
to ks...@googlegroups.com
http://kwon37xi.egloos.com/1462013 참조하시고, 결론만 정리하면
모든 JSP페이지에는 인코딩을 넣어주어야 합니다. 물론 그 인코딩에 맞게 파일이 저장돼 있어야하구요.

<%@page pageEncoding="UTF-8"%>

2012년 9월 8일 오후 10:29, Sewon Ann <kin...@gmail.com>님의 말:

--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.



--
* 까먹지말자! http://kwon37xi.egloos.com

kingori

unread,
Sep 9, 2012, 5:59:50 AM9/9/12
to ks...@googlegroups.com
고맙습니다.

하지만 제 상황은 jsp에서 include하는 것이 아닌, tagfile 내부에서 다른 리소스를 include하는 상황입니다.

저도 @page 를 시도해봤으나 이 경우 tagfile 내부에선 page 지시어를 쓸 수 없기 때문에 바로 에러가 나더라구요.

Tagfile에서 다른 리소스를 include 하는 게 일반적이진 않으리라고 생각되긴 한데 구글링을 해도 결국 @tag 를 일일이 넣는 법 밖에 없는 듯 하더라구요. 이렇게 되면 해당 파일은 tagfile에서만 사용할 수 있는 문제가 생기고... 어렵네요.

KwonNam Son

unread,
Sep 9, 2012, 6:43:37 AM9/9/12
to ks...@googlegroups.com
아, 질문을 잘못 이해했군요.

저 같은 경우는 include 대상 자체를 *.tag로 만들 것 같습니다.
그렇게 해서 다른 태그에서건 JSP에서건 그냥 커스텀 태그로써 호출하지요.


2012년 9월 9일 오후 6:59, kingori <kin...@gmail.com>님의 말:
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
웹에서 이 토론을 보려면 https://groups.google.com/d/msg/ksug/-/ltDS3l-x1vsJ을(를)를 방문하세요.

이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.

Green

unread,
Sep 9, 2012, 8:28:51 PM9/9/12
to ks...@googlegroups.com
2012. 9. 8. 오후 11:01에 "KwonNam Son" <kwon...@gmail.com>님이 작성:

kingori

unread,
Sep 10, 2012, 12:14:28 AM9/10/12
to ks...@googlegroups.com
네, 답변 고맙습니다.

혹시나 tagfile 에서 include 사용을 고민하고 계신 분들이 계시다면 encoding을 조심하셔야 할 듯 합니다.
tagfile과 jsp에서 범용으로 include할 방법이 없어보여서요.

tagfile에선 @tag 를 붙여야 하나 이러면 jsp include를 못하고
jsp에선 @page 를 붙여야 하나 이러면 tagfile에서 include를 못하네요.




2012년 9월 9일 일요일 오후 7시 43분 39초 UTC+9, 권남 님의 말:

kingori

unread,
Sep 10, 2012, 12:15:33 AM9/10/12
to ks...@googlegroups.com
아, 권남님께서 알려주신, 아예 tag로 만드는 방법도 있군요. :)

2012년 9월 10일 월요일 오후 1시 14분 28초 UTC+9, kingori 님의 말:
Reply all
Reply to author
Forward
0 new messages