EUC-KR<=>UTF-8 상호변환 하기

<?
# UTF 로 무조건 변환
function change_to_utf($utfStr) {
  if (iconv("UTF-8","UTF-8",$utfStr) == $utfStr) {
    return $utfStr;
  }
  else {
    return iconv("EUC-KR","UTF-8",$utfStr);
  }
}

# UTF => EUC-KR로 변환
function iconv_to_euc_kr($get_data) {
  $work_unit = 50;

  $init_size = strlen($get_data);

  $result_data = "";

  $count = 0;

  for ( $i = 0 ; $i < $init_size ; $i++ ) {
    $cur_char = substr($get_data,$i,1);

    $t = ord($cur_char);
    if ( $t == 9 || $t == 10 || (32 <= $t && $t <= 126) ) {
      $tn = 1;
    }
    else if ( 194 <= $t && $t <= 223 ) {
      $tn = 2;
    }
    else if ( 224 <= $t && $t < 239 ) {
      $tn = 3;
    }
    else if ( 240 <= $t && $t <= 247 ) {
      $tn = 4;
    }
    else if ( 248 <= $t && $t <= 251 ) {
      $tn = 5;
    }
    else if ( $t == 252 || $t == 253 ) {
      $tn = 6;
    }
    else {
      $tn = 1;
    }

    if ( $work_unit < $tn ) {
      break;
    }

    if ( $count + $tn > $work_unit ) {
      $temp_data = iconv("utf-8","euc-kr",$work_string);
      $result_data .= $temp_data;

      $work_string = "";
      $i--;
      $count = 0;
    }
    else {
      for ( $j = 0 ; $j < $tn ; $j++ ) {
        $work_string .= $cur_char;
        $i++;
        $count++;
        $cur_char = substr($get_data,$i,1);
      }
      $i--;
    }
  }

  if ( $work_string ) {
    $temp_data = iconv("utf-8","euc-kr",$work_string);
    $result_data .= $temp_data;
  }

  return $result_data;
}

# ex.

# 수신된 메일로부터 폼값을 받을때 수신된 메일의 charset이 euc-kr이 아닌 UTF8로 오는 경우,

# 일단 무조건 UTF8로 변환한 후 EUC-KR로 재변환하여 처리해야만 한글이 깨지지 않고

# 정상적으로 표출됩니다.

# Usage.
# $fromName = change_to_utf($fromName);
# $fromName = iconv_to_euc_kr($fromName);

?>


/**
* UTF-8=>한글 코드페이지[949]로 변환  AJAX에서 유니코드 문자 오류
*/
function utf8_euckr(&$item, $key, $prefix = ''){
    if(is_array($item)) array_walk($item, 'utf8_euckr');
    else $item=iconv('UTF-8', 'CP949',$item);
}
/**
* 한글 코드페이지[949] => UTF-8로 변환  AJAX에서 유니코드 문자 오류
*/
function euckr_utf8(&$item, $key, $prefix = ''){
    if(is_array($item)) array_walk($item, 'euckr_utf8');
    else $item=iconv('CP949', 'UTF-8',$item);
}
/**
* 입력값
*/
@array_walk($_POST, 'utf8_euckr');

/**
* 결과값 변환
*/
@array_walk($Result, 'euckr_utf8');

+ Recent posts