[PHP] UTF-8에서 EUC-KR 환경으로 폼 전송시 문자셋 변환

요즘은 거의 UTF-8 환경으로 작업을 하는데.. 결제 모듈 같은 거 연동하려면 아직도 EUC-KR 환경이 필요하다. 이번에도 UTF-8 상태의 폼에서 EUC-KR 페이지로 데이터를 넘겨야 하는 경우가 발생했다. 암호화를 하는 파일이 EUC-KR에서만 제대로 작동을 해서 어떻게 할 수 없는 상황이었다. 바이너리 파일은 내가 만든 게 아니니까..

이런 상황에서 그냥 데이터를 전송하면 한글의 경우 깨져서 처리를 할 수가 없게 된다. 그럴 때 아래처럼 데이터를 받는 페이지에서 처리를 해주면 해결이 되지 않을까 싶다. 폼을 전송하기 전에 문자셋을 바꿔주는 방법도 있다지만 모든 브라우저에서 처리가 되는 것은 아니라고 하니까.. PHP에서 처리를 하는 게 더 좋을 것 같다는 생각이 든다.

<?php
function iconv_euckr($str)
{
    return iconv("utf-8", "euc-kr", $str);
}

$_POST = array_map("iconv_euckr", $_POST);
?>

이런 코드를 데이터 처리 전에 넣어주면 POST로 넘어온 데이터의 문자셋을 모두 EUC-KR로 변경할 수가 있다. 한가지 주의해야할 것은 POST로 넘어오는 데이터에 배열로 된 값이 있다면 위의 코드를 변경해야한다는 것이다. 아래 포스트가 도움이 되지 않을까 싶다.

2012/12/14 – [PHP] array_map 대체 목적으로 만들어본 array_add_callback 함수

편리

PHP와 MariaDB, jQuery 등을 사용해 게시판, 쇼핑몰 솔루션을 개발합니다. 그누보드5와 영카트5 개발에 참여 했습니다. Linux와 Nginx는 물론 WordPress, Git 등에도 관심이 많습니다. 자전거 타기 및 사진 촬영을 취미로 하고 있습니다.

카카오톡 플러스친구 채팅 : NCUBE.NET

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.