이 인코딩 문제가 저를 괴롭게 하여 이렇게 질문 드립니다.
보통 인코딩 관련해서 스프링에서 제공하는
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 메서드로 입력한 값이 맞지 않았을 경우 에러 메시지와 입력한 값을 보여주는데
이 입력한 값이 ???? 로 표시됩니다.
음.. 인코딩은 사람을 괴롭게 하는군요. ㅠㅠ
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 메서드로 입력한 값이 맞지 않았을 경우 에러 메시지와 입력한 값을 보여주는데
> > 이 입력한 값이 ???? 로 표시됩니다.
>
> > 음.. 인코딩은 사람을 괴롭게 하는군요. ㅠㅠ- 원본 텍스트 숨기기 -
>
> - 원본 텍스트 보기 -
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>
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 설정하는 부분입니다.
지금 전 회사 제품 테스트.. 완전 귀찮아요. 중인데..
여튼 스프링은 지루할때마다 짬짬히 보고 있습니다.
박성철 님이 알려주신대로 모든 인코딩을 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>
> > > - 원본 텍스트 보기 -- 원본 텍스트 숨기기 -