인터넷정보

php 에서 utf-8 인지 euc-kr 인지.. 알수 있는 방법

알 수 없는 사용자 2008. 4. 11. 10:47
$sEncoding = mb_detect_encoding($sTitle, "UTF-8,euc-kr");

if ( $sEncoding == "UTF-8" )
{
  $sTitle = mb_convert_encoding($sTitle, "EUC-KR", "UTF-8");
}

$sTitle에 어떤 문자가 들어왔을 때
인코딩 방식이 UTF-8이면, EUC-KR로 변경해줍니다.

----------------------------------------------------------------------------------

mb* 함수들을 사용할 수 없는 환경이라면

http://dev.tattertools.com/browser/trunk/components/Eolin.PHP.Core.php?format=txt



여기의 UTF8::validate 함수 참고하셔도 됩니다.. utf8인지 그 외의 인코딩인지만 판단 가능하고

mb* 함수들도 마찬가지지만 한글자정도로 매우 짧은 한글은 오판하는 경우도 종종 있지요..

----------------------------------------------------------------------------------

    function is_utf8($string) {
        return preg_match('%^(?:
        [\x09\x0A\x0D\x20-\x7E]            # ASCII
      | [\xC2-\xDF][\x80-\xBF]            # non-overlong 2-byte
      |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
      | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
      |  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
      |  \xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3
      | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
      |  \xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16
        )*$%xs', $string);
    }
반응형