사이트 내 전체검색
PHP
utf-8 페이지에서 euc-kr로(또는 역으로) post전송시 charset 설정하기 - ie onlyHtml & script 2008/01/25 00:07
로빈아빠
https://cmd.kr/php/417 URL이 복사되었습니다.

본문

문제.
부동산써브의 홈페이지는 다국어 지원을 위해 기본 인코딩이 utf-8로 되어있다..
(물론 개중에는 아직 euc-kr로 되어있는 페이지도 간혹있기는 하다.)
그런데, 결제처리 과정에서 결제페이지로 전달된 한글이 깨져보이는 현상이 일어나고 있었다.
확인해 보니,
이것은 현재의 써브싸이트가 기본 encoding이 utf-8로 진행을 하면서, euc-kr로 되어있는 결제페이지로 데이타를 전송하다보니, 문자셋 차이로 인해 한글이 전송중 깨져서 일어나는 현상이었다.

해결.
해당부분의 에러는 일단, hidden필드를 두고, post전송할때 escape()를 적용해서 문제를 해결했다.
그러다 보니, form필드가 더 추가되어야 하는 부분들이 생기게 되었다.
(전송할필드(escape처리)와 고객에게 보여질필드)

이런문제를 근본적으로 해결해보려고, 여러군데를 찾다보니,
documenet에 charset을 설정하면 된다는 부분이 있었다. 폼전송전에
document.charset="euc-kr"로 설정을 해서 폼을 post로 전송을 해보니, 받는페이지(charset=euc-kr)에서
문자가 깨지는 현상을 막을수 있었다. 문제는 ie에서만 된다는것이다.
암튼, ie에서는 post전송전에 document.charset을 설정해주면 문자깨짐을 방지할수 있다.

ex)
<script>
function pay(frm){
document.charset="euc-kr";
}
</script>
<form name="ini" method="post" action="pay.asp" onSubmit="return pay(this)">
<input type="text" name="buyername1" size="20" value="테스트">
</form>

좀 불편하더라고, 인코딩이 서로다른 페이지에 대해서 작업을 할때는 한글에 대해서는 기본적으로 escape()/unescape()을 이용하는것이 좋겠다.

댓글목록

등록된 댓글이 없습니다.

PHP
871 (11/18P)

Search

Copyright © Cmd 명령어 18.188.107.57