개요
페이지 인코딩이 UTF-8인 페이지에서 form submit을 할때 EUC-KR 인 페이지로 요청할 경우 서로 다른 인코딩 때문에 데이터가 깨지는 경우가 발생합니다. (특히 한글 깨짐)
이를 방지하기 위해 submit 할때 인코딩을 변경하여 전송하는 방법을 포스팅 합니다.
<Form> accept-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();
'Program > Javascript, JQuery' 카테고리의 다른 글
[Javascript] 느낌표 두개(!!) 사용법 (논리 연산자) (1) | 2020.11.05 |
---|---|
[JQuery] 반복문 each break / continue 사용법 (1) | 2020.02.27 |
[Javascript/Jquery] form, input 동적 생성 및 submit (1) | 2019.11.11 |
[Javascript] 뒤로가기 막기, 뒤로가기 이벤트 제어 ( pushState / popstate ) (0) | 2019.11.08 |
[HTML/Javascript] 페이지내 원하는 위치로 이동 하기 ( scrollTo , scrollBy 차이 ) (0) | 2019.11.05 |