본문 바로가기

『IT/개발』/PHP

[PHP] String 인코딩 확인 후 UTF-8 변환하기.

웹 페이지를 개발하다 보면 흔히 겪는 일이있다.

바로 한글이 깨져서 나오는 경우.

한글이 깨져서 DB에 저장되는 경우.

등등...

저두 몇일 전 CUBRID DB에 데이터를 저장을 하였는데...어느 순간 글씨가 깨져서 저장된 몇몇 컬럼을 확인 한 적이 있었습니다.

깨진 글씨를 인코딩하여 확인해보니 UTC-8 문자 였던게 깨진 이유였던 것이었습니다.

무조건 UTF-8 로 데이터를 넘겨달라고 할 수도 없고 해서 그냥 서버단에서 처리를 하는 방법을 찾아보았죠.

그래서 찾은 함수는 "mb_desct_encoding" 이었습니다.


사용법은 별로 어렵지 않아요.

$str = "인코딩확인";

$enc = mb_detect_encoding($str, array("UTF-8", "EUC-KR", "SJIS"));

/* 참고로 SJIS 는 일본에서 자주 쓰는 인코딩입니다. */

/* UTF-8 이 아닌 경우에만 인코딩을 변환하면 되겠죠? */

if ($str != "UTF-8") {

        $str = iconv($enc, "UTF-8", $str);

        // iconv 는 인코딩 변환 함수죠.

}

간단하죠?

전 일일이 DB를 SELECT 하고 이를 UTF-8 로 변환을 한 후 다시 DB에 UPDATE 하는...일을 두번 하는 경험을 했네요.

다른 개발자님들은 미리 DB에 저장하기 전에 확인을 해서 저같은 상황을 겪지 않도록 하세요.