폼 전송시 한글 문자열이 깨질 때 > 홈페이지제작

본문 바로가기

팝업레이어 알림

팝업레이어 알림이 없습니다.
사이트 내 전체검색


회원로그인

카카오톡친구추가 제임스 SNS마케팅 사용자모임 네이버밴드초대

접속IP:34.236.190.216



홈페이지제작

폼 전송시 한글 문자열이 깨질 때

페이지 정보

작성자 운영자 작성일15-03-25 01:42 조회536회 댓글1건

본문

UTF-8 문자셋을 사용하는 HTML 페이지에서 EUC-KR 문자셋을 사용하는 HTML 페이지로 폼 데이터 전송을 하면, 원래 의도했던 글자가 아닌 해괴한 문자가 나타납니다.

9f247fd58f95decab4cd97ca18453e53_1427215
해괴한 문자

물론, EUC-KR 페이지에서 UTF-8 페이지로 보낼 때도 마찬가지 현상이 나타납니다(출현하는 외계어는 다르겠군요).

하지만, 해결할 방법은 있습니다. HTML 스펙에는 이런 상황을 위해 <form> 태그에 accept-charset 이라는 속성을 준비해두었습니다. 정확한 용도는 “입력받은 데이터를 서버에서 다루거나 처리할 수 있는 문자셋”을 지정하는 것에 있습니다. 다시 말해, 서버에서 허용하는 문자셋을 지정함으로써, 브라우저가 현재의 데이터를 해당 문자셋으로 변환해서 보내도록 하는 것입니다.

이쯤에서 “이제 됐다”라고 생각하실 분이 계시겠지만, 안타깝게도 우리의 연로하신 Internet Exploreraccept-charset 을 제대로 인식하지 못합니다. 정확하게는 속성으로도 사용할 수 있고, 자바스크립트로도 읽거나 쓸 수 있지만 지원하는 문자셋이 아주 한정적입니다. sitepoint 에서는 이 속성에 대한 IE의 지원을 Buggy(버그가 많은)라고 태깅해두었습니다. 한정적인 문자셋에 우리가 많이 사용하는 euc-kr이나 utf-8은 포함되지 않으므로, 결국 다른 방법을 찾아야 합니다.

일단 IE를 제외한 Firefox, Google Chrome, Safari, Opera 등의 브라우저는 이 속성을 잘 지원하므로 이들 브라우저를 위해 form 에 다음과 같이 속성을 표시합니다.

<form ... accept-charset="서버로 보낼 인코딩">

서버로 보낼 인코딩 부분은 현재 문서의 문자셋과 상관없이 데이터를 서버측에 어떤 문자셋으로 보낼 것인지를 지정합니다. 예를 들어, UTF-8 페이지에서 EUC-KR 페이지로 폼 전송을 한다고 하면 euc-kr 혹은 EUC-KR 이라고 입력하면 됩니다.

이제 IE를 위한 처리를 해주는 자바스크립트를 작성합니다.

// by gony(http://mygony.com) - 20081216
function emulAcceptCharset(form) {
    if (form.canHaveHTML) { // detect IE
        document.charset = form.acceptCharset;
    }
    return true;
}

이제 이 함수를 onsubmit 이벤트에 할당합니다. 이 시점에서는 return true; 가 필요하지 않지만 포함되어 있는데, 그 이유가 곧 나타납니다. :)

<form ... accept-charset="서버로 보낼 인코딩"  onsubmit="emulAcceptCharset(this)">

보통은 여기서 끝이지만, 폼 검사기(form validator)를 사용하시는 분들 중에는 어느 시점에 이 함수를 포함시켜야 할지 혼란스러울 수 있습니다. 이 함수는 항상 submit 핸들러의 가장 마지막에 포함되어야 합니다. 따라서, 만약 여러분이 사용하는 폼 검사기의 함수 이름이 validate 라고 한다면, 다음과 같은 형태로 사용하시면 됩니다.

<form ... accept-charset="서버로 보낼 인코딩"
  onsubmit="return validate(this) && emulAccpetCharest(this)">

validate(this) 부분은 사용하시는 폼 검사기에 따라 달라져야 함을 주의하시기 바랍니다.

이 스크립트는 Firefox 1+, Safari 1.3+, Chrome 1+, Opera 9.2+, IE 5.5+ 에서 사용가능합니다.

출처:http://taegon.kim/archives/1692

 

  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오스토리로 보내기

댓글목록

홈페이지제작 목록

Total 37건 1 페이지
홈페이지제작 목록
번호 제목 글쓴이 날짜 조회
37 특수문자 아스키 문자 인코딩 관련정리 인기글 운영자 12-28 278
36 리눅스에서 특수문자 파일 삭제 인기글 운영자 09-10 278
35 jQuery Selector 셀렉터 사용법 인기글 운영자 02-08 303
34 상업적인 이용이 가능한 무료 이미지 사이트 모음 댓글2 인기글 운영자 05-19 1025
33 모바일로 접속시 리다이렉트 시키는 모두[modoo.at]소스 인기글 운영자 05-03 1219
32 [PHP] 열린 문서의 절대경로, 상대 경로, URL, URI 나타내기 인기글 운영자 04-30 702
31 F5, F11을 통한 소스보기 마우스 우클릭 드래그 막기 인기글 운영자 04-16 496
열람중 폼 전송시 한글 문자열이 깨질 때 댓글1 인기글 운영자 03-25 537
29 자바스크립트 javascript 브라우저 체크, 익스플로러 버전체크 인기글 운영자 03-25 610
28 레퍼러 referer 포함하는 팝업만들기 인기글 운영자 03-24 476
27 그누보드 data폴더 퍼미션 변경 인기글 운영자 03-24 540
26 그누보드에서 외부 smtp 사용하여 메일보내기 댓글1 인기글첨부파일 운영자 03-19 804
25 MySQL 해당 필드에 중복된 값 찾기 인기글 운영자 03-08 435
24 모바일웹 Meta tag 이용하여 화면 최적화 하기 인기글 운영자 03-07 522
23 국내 Open Api 모음 인기글관련링크 운영자 03-06 6137
22 RGB 색상표 검색기능도 있습니다. 인기글 운영자 02-18 1047
21 웹학교 코딩공부 유튜브 동영상 강좌 전체 목록 댓글2 인기글첨부파일 운영자 02-08 595
20 코딩공부 최고사이트 w3schools.com (html / css / java / jquery / xml /… 인기글첨부파일 운영자 02-08 466
19 웹사이트가 어떤 서버로 가동되는지 기타 등등 파악할수 있는 사이트 인기글첨부파일관련링크 운영자 02-02 373
18 웹문서 삭제 처리 방법 인기글 운영자 02-01 807
게시물 검색


홈쇼핑 인기상품을 국내 최저가로 구매하실 분들만 들어 오세요.^0^

*패쇄몰*이라 국내 최저가가 가능합니다.

새로운 상품을 매일 공동구매로 진행.

*패쇄몰*이라 싸게 판매가 되어 금방 매진이 됩니다.(꼭 참고 하세요)

오셔서 득템 하세요. ^0^

후회하지 않습니다.^0^

교환,반품,A/S도 철저히 이루어 집니다.

아래 주소로 들어오시면 됩니다.^0^

▶밴드 바로가기 클릭◀
https://bit.ly/2q69oFl

접속자집계

오늘
196
어제
375
최대
5,398
전체
2,002,785
Copyright © http://jamesoft.kr All rights reserved.
상단으로
모바일 버전으로 보기