다른 시스템과 연동을 하는 중에 흔히 실수하는 것이 여러가지 있다.
자신이 개발하는 문자셋과 연동할 시스템의 문자셋이 다른 것이 그 중 하나다.
당연히 다른 시스템과 문자셋이 다르면 깨져 보이기 때문에 iconv나 mbstring 등의 함수로 처리를 한다.
그런데도 깨진다.
그것은 값을 넘기는 과정에서 변환이 되지 않은 부분이 있던가 아니면 변환한 것을 다시 변환해서 그런 경우가 많다.
다른 시스템(특히 PG 연동 등)에서 내가 보낸 것을 찍어 보기가 어려워서 고민을 한다.
하지만, 최종적으로 값을 넘기는 최종 단계에서 화면에 출력을 해 보면 그것을 알 수 있다.
출력할때는 header함수를 이용해서 해당 페이지의 인코딩을 지정해 놓고 봐야 한다.
문자포맷을 변환할 때는 먼저 해당 문자가 어떤 언어포맷인지부터 확인한 후에 변환을 해야 한다.
<?
// $data : 넘길 값
$tdata = mb_convert_encoding($data,"EUC-KR","EUC-KR"); // 일단 euckr로 변환을 해 본다.
if($tdata != $data) // euckr로 변환 전의 값과 변환 후의 값이 다르면 해당 문자는 utf8일 가능성이 높다.
{
$data = mb_convert_encoding($data,"EUC-KR","UTF-8"); // utf8로 변환한다.
}
.
.
.
?>
간단하지만 머뭇거리게 되는 것, 하지만 찍어보면 아주 간단히 해결이 된다.
하츠의 꿈
PG 작업(다른 시스템 연동) 중 한글 깨지는 문제 해결 - PHP 본문
Comments