메뉴 건너뛰기

Dev tips

http://deculture.egloos.com/481566?89a004e0
오늘 일하다 발견한 건데.. 페이지는 신나게 UTF-8로 작성하였지만 정작 form에서 호출할 페이지가 euc-kr이라면?!!

당연하게도, 한글 등등이 살포시 깨져 주셔서 우리를 절망의 늪으로 몰아 갈 것입니다. (OTL...)



첫 번째 대처법은 아래와 같습니다.

<form name="fm" method="POST" action="" accept-charset="euc-kr">
    ......
</form>

즉, form 태그 내의 속성값으로 accept-charset 을 주는 것이지요.



그런데, 한 가지 문제가 발생합니다. '이 잘난 IE님께서는 표준 규약을 가비얍게 무시해 주신다는 거지요!'

그덕에, 위의 태그로는 IE에서 전혀 절대 네버 우리가 원하는 동작이 발생하지 않게 됩니다.



여기서 두 번째 대처법이 등장합니다.

document.charset = 'euc-kr';

즉, document의 charset을 명시적으로 euc-kr로 변환하는 것으로써, IE에서 정상적인 수행이 가능합니다.



하지만, 벗뜨, 그러나... 위의 두 가지 대처법을 동시에 쓰면 바로 애러가 발생합니다.

네, 당연하게도 두 번째 대처법인 document.charset = 'euc-kr'; 를 사용할 경우 '이제는 FireFox에서 정상적으로 안 돌아갑니다.'

... OTL...





그래서, Cross-Browsing과 여타 등등을 고려한 완성된 코드는 아래와 같이 작성됩니다.

form 부분:
<form name="fm" method="POST" action="" accept-charset="euc-kr">
    ......
</form>

script 부분:
<script type="text/javascript">
    var defCharset=document.charset;

    function doSubmit() {

        ......

        if (/MSIE/.test(navigator.userAgent)) {
            document.charset = 'euc-kr';
        }

        document.fm.submit();

        document.charset=defCharset;
    }
</script>


굳이 기존 charset을 저장하여 두는 이유는, document.charset으로 charset을 변경하였을 경우

'뒤로가기' 나 history.back() 을 통한 이전 페이지 호출시 문자가 깨질 수 있기 때문입니다. - charset이 변했으므로



저와 비슷한 고민을 하시는 분들이 어서 그 수고로움을 덜기 바라면서... +_+

번호 제목 글쓴이 날짜 조회 수
313 구글을 이용한 rapidshare 에 등록된 파일 검색 taknim 2009.06.19 9412
312 폼관련 스크립트 짤때 맨날 인클루드 해서쓰는 함수들 taknim 2009.06.17 7455
311 [객체지향] this / __get() / __set() / clone / autoload / :: taknim 2009.06.12 9267
310 [Oracle] ORA-00600, ORA-06544, ORA-06553 오류 발생시 taknim 2009.06.09 23841
309 [php.ini] auto_prepend_file, auto_append_file 설정 taknim 2009.06.04 11654
308 IE6 에서 SELECT z-index 문제 taknim 2009.06.04 10212
307 리눅스에서 삼바서버 연결하기, 끊기 (mount, umount) taknim 2009.05.29 12343
306 VNC사용시 number keypad숫자가 안 먹을때 taknim 2009.05.29 11953
305 문자열에서 문자 하나하나를 html 형식(&#)으로 변경하기 taknim 2009.05.14 8017
304 이미 설치된 아파치에 rewrite 모듈 추가 설치 taknim 2009.04.30 11883
303 MS-SQL 링크드 서버 만들기 taknim 2009.03.20 12176
302 특정 레코드 앞뒤로 합계 구하기(over,range,PRECEDING,following) taknim 2009.02.05 9910
301 StrConv 함수 - 로케일 변환 taknim 2009.01.30 10813
300 javascript 로 stylesheet 컨트롤할때 키워드 매칭표 taknim 2009.01.22 6784
299 iframe 크기 자동조절 (네이버) - 파이어폭스가능 taknim 2009.01.22 7582
» POST방식으로 다른 charset Action에 Data 넘겨주는 방법 taknim 2009.01.22 10252
297 mysql 자동 최적화 / 복구 스크립트 taknim 2009.01.16 9800
296 [KISA] mod security 매뉴얼 및 동영상 taknim 2009.01.14 10664
295 유용한 함수 pack, unpack, ip2long, long2ip taknim 2009.01.13 33382
294 윈도우 리부팅.끄기.잠금 아이콘 만들기 [1] taknim 2009.01.08 9613