스프링 2.5 IE 8에서 인코딩 관련..

326 views
Skip to first unread message

reperion

unread,
Jul 29, 2009, 5:13:40 AM7/29/09
to Korea Spring User Group
안녕하세요!!

이 인코딩 문제가 저를 괴롭게 하여 이렇게 질문 드립니다.

보통 인코딩 관련해서 스프링에서 제공하는
org.springframework.eb.filter.CharacterEncodingFilter 를 사용하여
EUC-KR로 줘서 사용하지 않습니까...(저는 잘 모르겠지만 책에서 -ㅅ-;)

여튼 이렇게 설정을 해주고..

Jquery를 사용해서 ajax로 form을 submit 하고 있습니다.
ajax에서는 encodeURl 어쩌구로 해서 기본적으로 UTF-8 형식으로 파라미터를 전달합니다.

근대 이게.. FF 3.5 에서는 한글이 잘 날라 갑니다.
벗.. 하지만.. 우리의 IE 8에서는 한글이 죄다 깨져서..????? .. 이렇게 날라가는데..

이경우 어떻게 해야 아름다운 한들들을 볼 수 있을까요?

web.xml에 인코딩을 UTF-8로 바꿔서 해봤더니 되긴 되더군요.. 그래서 잠시 기뻐했는데.
ajax로 전송한 폼 말고, 일반적인 form으로 전송 하여 SimpleFormController으로 처리한 경우,
showForm 메서드로 입력한 값이 맞지 않았을 경우 에러 메시지와 입력한 값을 보여주는데
이 입력한 값이 ???? 로 표시됩니다.

음.. 인코딩은 사람을 괴롭게 하는군요. ㅠㅠ

Sanghyuk Jung

unread,
Jul 29, 2009, 8:00:51 AM7/29/09
to ks...@googlegroups.com
web.xml에 엔코딩 관련 설정이 어떻게 되어있는지 한번 그 부분만 복사해서 보내봐주시구요, 혹시 apache도 같이 쓰신다면 인코딩 관련 부분이 있다면 같이 알려주세요~
 
그러면 좀 더 구체적으로 조언을 주실 수 있으실 분들이 나올지도 모르겠네요.
 
테스트로 그냥 jsp로만으로 만들어서도 값이 이상하게 넘어오는지도 한번 확인해보세요~
 

 
2009년 7월 29일오후 6:13, reperion <dos...@gmail.com>님의 말:

reperion

unread,
Jul 29, 2009, 8:43:07 AM7/29/09
to Korea Spring User Group
답변 감사합니다. ^^

web.xml 인코딩 설정은
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilterImpl
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>EUC-KR</param-value>
</init-param>
</filter>

이렇게 되어 있습니다.
따로 아파치 쓰지는 않구요. 공부하는거라서 톰캣 5.5에서 쓰고 있습니다 ^^;
제가 퇴근길에 쓰는거라서 너무 다다닥 썼네요.

Jquery로 ajax 처리 하는 부분은 Jquery 파일을 살펴보면 파라미터들은 죄다 encodeURIComponent()로
감싸서 전송을 하고 있습니다. (Param 으로 검색해보면 보여요.)

그냥 JSP로만 form 처리 하면 잘 전송 됩니다.
위에 맨 마지막에 설명 했듯이요.
하지만 꼭 jquery와 함께 사용하고 싶어서요.

내일 출근하면 다시 한번 살펴 봐야 겠네요.
너무 급하게 살펴본듯 싶어요.

On 7월29일, 오후9시00분, Sanghyuk Jung <bene...@gmail.com> wrote:
> web.xml에 엔코딩 관련 설정이 어떻게 되어있는지 한번 그 부분만 복사해서 보내봐주시구요, 혹시 apache도 같이 쓰신다면 인코딩
> 관련 부분이 있다면 같이 알려주세요~
>
> 그러면 좀 더 구체적으로 조언을 주실 수 있으실 분들이 나올지도 모르겠네요.
>
> 테스트로 그냥 jsp로만으로 만들어서도 값이 이상하게 넘어오는지도 한번 확인해보세요~
>

> 2009년 7월 29일오후 6:13, reperion <dosa...@gmail.com>님의 말:


>
>
>
> > 안녕하세요!!
>
> > 이 인코딩 문제가 저를 괴롭게 하여 이렇게 질문 드립니다.
>
> > 보통 인코딩 관련해서 스프링에서 제공하는
> > org.springframework.eb.filter.CharacterEncodingFilter 를 사용하여
> > EUC-KR로 줘서 사용하지 않습니까...(저는 잘 모르겠지만 책에서 -ㅅ-;)
>
> > 여튼 이렇게 설정을 해주고..
>
> > Jquery를 사용해서 ajax로 form을 submit 하고 있습니다.
> > ajax에서는 encodeURl 어쩌구로 해서 기본적으로 UTF-8 형식으로 파라미터를 전달합니다.
>
> > 근대 이게.. FF 3.5 에서는 한글이 잘 날라 갑니다.
> > 벗.. 하지만.. 우리의 IE 8에서는 한글이 죄다 깨져서..????? .. 이렇게 날라가는데..
>
> > 이경우 어떻게 해야 아름다운 한들들을 볼 수 있을까요?
>
> > web.xml에 인코딩을 UTF-8로 바꿔서 해봤더니 되긴 되더군요.. 그래서 잠시 기뻐했는데.
> > ajax로 전송한 폼 말고, 일반적인 form으로 전송 하여 SimpleFormController으로 처리한 경우,
> > showForm 메서드로 입력한 값이 맞지 않았을 경우 에러 메시지와 입력한 값을 보여주는데
> > 이 입력한 값이 ???? 로 표시됩니다.
>

> > 음.. 인코딩은 사람을 괴롭게 하는군요. ㅠㅠ- 원본 텍스트 숨기기 -
>
> - 원본 텍스트 보기 -

Sewon Ann

unread,
Jul 29, 2009, 8:46:16 AM7/29/09
to ks...@googlegroups.com
tomcat 이시라면 GET 방식으로 오가는 parameter 세팅을 위해 tomcat 기본 설정을 바꾸실 필요가 있을 지도 모르겠군요.

http://beizix.egloos.com/1197276  이 글에서 server.xml 설정하는 부분입니다.

저것 먼저 해 보시면 아마 성공하실 것 같네요 :)

2009/7/29 reperion <dos...@gmail.com>



--
---------------------------------------------------
Sewon Ann
Chief Staff Consultant @ SolutionLink

chanwook park

unread,
Jul 29, 2009, 9:47:43 AM7/29/09
to ks...@googlegroups.com
네. 톰캣 5.5, get 방식에서만 한글이 깨집니다..
6.x에서는 패치가 됐는지 발생하지 않습니다..

바로 해결하실 수 있으실 듯해요~

--
================================
Blog : http://chanwook.tistory.com
E-mail: chanwo...@gmail.com
MSN : chanwo...@hotmail.com
Google talk: chanwo...@gmail.com

박성철

unread,
Jul 29, 2009, 7:41:39 PM7/29/09
to Korea Spring User Group
GET 방식의 인코딩을 <connector 에서 URIEncoding으로 문자 셋 지정하는 건 6.0에서도 마찮가지로 알고 있습
니다.
제가 보기에 GET 방식의 인코딩 때문은 아닌 듯 하고요. (확인은 해봐야겠지만...)
filter로 인코딩을 euc-kr로 지정했는데 ajax 호출은 utf-8로 되는 바람에 한글이 깨지는 것 아닌가 합니다. FF
와 IE에서 작동이 다른 문제는 뭔가 브라우저 특성 때문 아닐지...
그래서 filter 설정을 utf-8로 바꾸면 ajax 문제가 해결되었던 거겠죠.
다만 filter 설정을 utf-8로 바꾼 후에 일반 페이지가 깨진 것은 일반 페이지의 인코딩이 euc-kr이기 때문일 것입니
다.
결국 해답은 filter 설정을 utf-8로 하고
모든 페이지를 euc-kr에서 utf-8로 바꾸는 거... 아닐까요?
꼭 euc-kr로 써야 할 이유가 없다면 말이죠.

On 7월29일, 오후9시46분, Sewon Ann <king...@gmail.com> wrote:
> tomcat 이시라면 GET 방식으로 오가는 parameter 세팅을 위해 tomcat 기본 설정을 바꾸실 필요가 있을 지도 모르겠군요.
>
> http://beizix.egloos.com/1197276 이 글에서 server.xml 설정하는 부분입니다.
>
> 저것 먼저 해 보시면 아마 성공하실 것 같네요 :)
>

> 2009/7/29 reperion <dosa...@gmail.com>

전형민

unread,
Jul 29, 2009, 8:00:33 PM7/29/09
to ks...@googlegroups.com
저도 이문제 때문에 예전에 고민한적 있었는데요..
jQuery 인지. prototype 이지 모르겠지만. ajax data encording type을 설정하는 부분이 있습니다.
그래도 정상적으로 처리되지 않는다는 거죠..
( FF에서 정상적으로 처리되는지는 몰랐군요. )

하여튼. 아마도 지금 한글부분은 ajax data 영역에 넣어 두신것 같은데 이 data를 Url 영역으로 바꾸시는 거죠.
예)...
$.get( '/abc/d.do' , { param : value , kor : '한글값' } , callback ) ;
이렇게 되어 있는것을
$.get( '/abc/d.do?kor=한글값' , { param : value } , callback ) ;
이렇게 변경하는 것죠
그리구 위에서 말씀하신 
GET 방식의 인코딩을 <connector 에서 URIEncoding으로 문자 셋을 EUC-KR 로 지정
하면... 아마 문제 없을 것입니다.

저같은 경우는 이런 ajax function을 추가한건 기존의 application을 custom 하는 과정이라서 전체 encording type을 변경할수가
없었구요.

그렇지 않다면 encording type을 변경하시는 것이 좋을것 같습니다.
요즘나오는 jQuery pluing 뿐만 아니라. 다른 javascript library 들이 utf-8 로 나오는데 page가 EUC-KR이면..
plugin 을 다시 손봐주셔야 하거든요.

도움이 되었나 모르겠네요. 수고들 하세요.

------------------------------------
당신의 과거가 당신을 만든다.


2009년 7월 30일오전 8:41, 박성철 <gyu...@gmail.com>님의 말:

Toby Lee

unread,
Jul 29, 2009, 8:32:22 PM7/29/09
to ks...@googlegroups.com
영어만 쓰는 방법도 있습니다 -_-;;

외국 프로젝트 할 때는 한글 신경 안써도 된다는 게 제일 좋더군요.

2009/7/30 전형민 <sup...@gmail.com>

박성철

unread,
Jul 29, 2009, 10:17:38 PM7/29/09
to Korea Spring User Group
-o-);;

On 7월30일, 오전9시32분, Toby Lee <tobyi...@gmail.com> wrote:
> 영어만 쓰는 방법도 있습니다 -_-;;
> 외국 프로젝트 할 때는 한글 신경 안써도 된다는 게 제일 좋더군요.
>
> 2009/7/30 전형민 <sup...@gmail.com>
>

> > 저도 이문제 때문에 예전에 고민한적 있었는데요..jQuery 인지. prototype 이지 모르겠지만. ajax data

> >> >http://beizix.egloos.com/1197276이 글에서 server.xml 설정하는 부분입니다.

Miracle[J.W Kim]

unread,
Jul 29, 2009, 10:55:56 PM7/29/09
to ks...@googlegroups.com
제가 알기로는 2바이트 문자를 URL에 붙여서 전송하기 위해서는 인코딩이 필요한데...

기본적인 인코딩은 브라우저에서 처리를 해주기 때문에 from이나 직접 주소를 쳐서 들어갈때는 문제가 없습니다.

하지만 HttpXMLRequet를 이용할때는 프로그래머가 명시적으로 인코딩 설정을 해줘야합니다.
(제발.. 2바이트 문자권 개발자도 생각하면서 설계해달라고... ㅠ.ㅠ)

자바스크립트에서 지원하는 문자 인코딩 함수는 encodeURIComponent가 있는데...

아쉽게도 UTF-8밖에 지원을 하고 있지 않아서 생기는 문제일 것 같네요...

해결 방법은 어느 블로그에서 찾은 방법인데... 그 블로그 주소를 잃어버려서.. 생각나는데로 적겠습니다.... 도움이 되기를...

1. AJAX 요청에만 특정 Header를 붙여서 전송합니다.
(jQuery는 AJAX요청을 보내기 전에 초기화를 할 수 있도록 지원합니다.)

2. Tomcat 설정을 헤더에 따라서 인코딩할 수 있도록 수정합니다...
(다른 분들이 적어주신 방법 사용하면 될듯 하네요..)

3. 인코딩 필터에서 request의 헤더에서 AJAX 요청인지 확인하고... AJAX 요청이라면 UTF-8로 인코딩 설정해주고...
이외의 요청에는 euc-kr로 인코딩 해줍니다.

4. 한글이 잘 넘어오는지 확인합니다.

그럼... 잘 해결되기를... ^^

"頼るな、勝ち取れ。さすれば与えられ。"
[ 기다리지 마라!  쟁취하라! 그러면 주어질 것이다. ]


2009/7/29 reperion <dos...@gmail.com>

reperion

unread,
Jul 30, 2009, 12:43:37 AM7/30/09
to Korea Spring User Group
이렇게 무수한 답변을 달아 주시다니!!
정말 고맙습니다. ㅋ

지금 전 회사 제품 테스트.. 완전 귀찮아요. 중인데..
여튼 스프링은 지루할때마다 짬짬히 보고 있습니다.

박성철 님이 알려주신대로 모든 인코딩을 UTF-8로 하게되면
자바스크립트 안에 있는 한글들이 전부다 깨져서 포기했습니다.
인코딩 문제는 미묘하기 때문에 제 이클립스 설정에 이상이 있을 수 도 있겠네요.

다시 에러를 살펴 보니
Ajax get 방식은 (그냥 원래 설정대로 다른것 안건드리고, web.xml 에 euc-kr 인코딩 필터만 적용)
잘 넘겨져서 처리하는군요.

하지만 Ajax로 post만 처리할때만 한글이 깨졌었습니다.

전형민님이 지적해주신것은
파라미터를 직접 날리지 않고, form.formSerialize()해서 전송해봤기 때문에 적용을 못해봤습니다.
jQuery Ajax에 contentType 지정하는게 있는데 여기서 캐릭터셋(디폴트는 UTF-8)을 euc-kr로 변경해서도
해봤습니다만..
무슨 연유에서 인지 적용이 안되더라구요.

그래서 어차피 걍 공부할꺼 get으로만 날리지 뭐 -,.-
하다가..
페이지 인코딩이 거슬려서... <%@ page contentType="charset=UTF-8"%> (다른 내용은 삭제)
로 바꿔서 했더니 다 되는군요...

아 인코딩은 정말 머리 아프네요. =,.=

그럼 정리 해 보면
server.xml에 인코딩은 UTF-8
web.xml에 인코딩 필터는 스프링 인코딩 필터로 UTF-8로 지정
jsp 페이지 인코딩은 다른건다 euc-kr, charset만 UTF-8로 지정

이렇게 했습니다.

답변 달아주신분들 고맙습니다!!
열심히 공부해야겠네용 ㅋ

On 7월30일, 오전11시55분, "Miracle[J.W Kim]" <kmira...@gmail.com> wrote:
> 제가 알기로는 2바이트 문자를 URL에 붙여서 전송하기 위해서는 인코딩이 필요한데...
>
> 기본적인 인코딩은 브라우저에서 처리를 해주기 때문에 from이나 직접 주소를 쳐서 들어갈때는 문제가 없습니다.
>
> 하지만 HttpXMLRequet를 이용할때는 프로그래머가 명시적으로 인코딩 설정을 해줘야합니다.
> (제발.. 2바이트 문자권 개발자도 생각하면서 설계해달라고... ㅠ.ㅠ)
>
> 자바스크립트에서 지원하는 문자 인코딩 함수는 encodeURIComponent가 있는데...
>
> 아쉽게도 UTF-8밖에 지원을 하고 있지 않아서 생기는 문제일 것 같네요...
>
> 해결 방법은 어느 블로그에서 찾은 방법인데... 그 블로그 주소를 잃어버려서.. 생각나는데로 적겠습니다.... 도움이 되기를...
>
> 1. AJAX 요청에만 특정 Header를 붙여서 전송합니다.
> (jQuery는 AJAX요청을 보내기 전에 초기화를 할 수 있도록 지원합니다.)
>
> 2. Tomcat 설정을 헤더에 따라서 인코딩할 수 있도록 수정합니다...
> (다른 분들이 적어주신 방법 사용하면 될듯 하네요..)
>
> 3. 인코딩 필터에서 request의 헤더에서 AJAX 요청인지 확인하고... AJAX 요청이라면 UTF-8로 인코딩 설정해주고...
> 이외의 요청에는 euc-kr로 인코딩 해줍니다.
>
> 4. 한글이 잘 넘어오는지 확인합니다.
>
> 그럼... 잘 해결되기를... ^^
>
> "頼るな、勝ち取れ。さすれば与えられ。"
> [ 기다리지 마라!  쟁취하라! 그러면 주어질 것이다. ]
>

> 2009/7/29 reperion <dosa...@gmail.com>

> > > - 원본 텍스트 보기 -- 원본 텍스트 숨기기 -

장시영

unread,
Jul 30, 2009, 8:07:57 PM7/30/09
to ks...@googlegroups.com
한글 문제가 걸리면, 상당히 귀찮아지지요.
하여, 저는 애초에  거의 모든걸 UTF-8로 맞추고 진행합니다. 다국어에도 대응할 수 있구요.
 
DB도 UTF-8로 맞추면, 향후 다국어 확장성에도 쉽게 대응할 수 있지요.
 
수고 많았네요...

2009년 7월 30일오후 1:43, reperion <dos...@gmail.com>님의 말:
Reply all
Reply to author
Forward
0 new messages