본문으로 바로가기

 개요


페이지 인코딩이 UTF-8인 페이지에서 form submit을 할때 EUC-KR 인 페이지로 요청할 경우 서로 다른 인코딩 때문에 데이터가 깨지는 경우가 발생합니다. (특히 한글 깨짐)


이를 방지하기 위해 submit 할때 인코딩을 변경하여 전송하는 방법을 포스팅 합니다.


 <Formaccept-charset 속성 추가 


submit 하려는 form 엘리먼트에 accept-charset 속성을 추가하여 전송할 인코딩셋을 지정해 줍니다.  ( euc-kr / utf-8 )

<form name="testForm" method="post"  action="https://ifuwanna.tistory.com/198" accept-charset="euc-kr"> 
	<input type="hidden"  name="data"  value="value"/>
</form>

바로 태그에 속성을 지정하지 않고 Javascript나 Jquery를 통해서 동적으로 속성을 추가해 주셔도 됩니다.

//Javascript
document.testForm.acceptCharset = "euc-kr"
//Jquery
$("form[name='testForm']").attr("accept-charset") = "euc-kr"


 document.charset  ( for IE Browser ) 


익스플로러(IE) 브라우저에서는 accept-charset 속성이 정상적으로 동작하지 않습니다. (아마도 버그...)

IE에서는 submit 직전에 document 객체의 charset 속성을 변경 해주시면 정상적으로 전송 되는 것을 확인하실 수 있습니다.
document.charset = "euc-kr"; 
document.testForm.submit();