iconv 언어셋 옵션 //TRANSLIT , //IGNORE
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