[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 함수