iconv 언어셋 옵션 //TRANSLIT , //IGNORE

less than 1 minute read

iconv 사용시utf-8 => euc-kr, cp949 위 처럼 변환하는 경우 목적지 언어셋에 없는 문자가 변환에 문제가 되는 경우가 있다.

  • 옵션 없음
  • 옵션이 없이 사용할 경우 표현할 수 없는 문자 부터 뒤로는 전부 사라진다.
    (밑의 첫번째 예제 참고)

  • //TRANSLIT
  • If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can’t be represented in the target charset, it can be approximated through one or several similarly looking characters.
    (php 함수 메뉴얼에서)
  • 나타낼 수 없는 문자일 경우, 문자를 유사한 문자로 표시함.
    한글의 경우 자음,모음 분리됨.(밑의 예제 참고)
    Á 같은 라틴 문자는 부호+알파벳으로 분리됨

  • //IGNORE
  • If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. 
    (php 함수 메뉴얼에서)
  • 나타낼 수 없는 문자일 경우, 문자를 삭제함.

  • //IGNORE//TRANSLIT , //TRANSLIT//IGNORE
  • 둘을 동시에 사용할 경우, //TRANSLIT 으로 동작함.

$v=’AÁ가힣똚헳나’; $r =iconv(‘utf-8’,’euc-kr’,$v); echo ‘$r : ‘,$r,’:’,urlencode($r);

=> 
$r : A:A


$v=’Á가힣똚헳나’; $r = iconv(‘utf-8’,’euc-kr//TRANSLIT’,$v); echo ‘$r : ‘,$r,’:’,urlencode($r);

=> 

$r : A´A가ㅎㅣㅎㄸㅗㄻㅎㅔㅀ나:A%A2%A5A%B0%A1%A4%BE%A4%D3%A4%BE%A4%A8%A4%C7%A4%AB%A4%BE%A4%C4%A4%B0%B3%AA


$v=’Á가힣똚헳나’; $r = iconv(‘utf-8’,’euc-kr//IGNORE’,$v); echo ‘$r : ‘,$r,’:’,urlencode($r);

=>  $r : A가나:A%B0%A1%B3%AA


🔗original-link

Updated: