Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

 

개요

GNU 에서 만든 문자열 변환 유틸리티(iconv) 및 라이브러리(libiconv)

 

iconv 유틸리티 사용

지원하는 encoding 목록 보기

iconv -l

iconv 는 Multi Byte 한국어 인코딩인 EUC-KR과 CP949, ISO-2022-KR, JOHAB 방식을 모두 지원

 

변환 옵션

option

--from-code, -f encoding - 변환할 원본 인코딩을 명시, iconv 는 encoding detect 유틸이 아니므로 원본 인코딩을 정확하게 명시해야 함

--to-code, -t encoding - 변환될 인코딩을 설정

--output, -o filename - 출력 파일명, 지정되지 않으면 콘솔로 출력됨


(info) encoding 은 -l 로 표시되는 인코딩명을 참조

encoding 뒤에 //TRANSLIT, //IGNORE 두 개의 옵션을 추가할수 있다.  

  • //TRANSLIT : to-code 에 맞는 char가 없을 경우 비슷한 char 을 찾아서 대치한다.
  • //IGNORE : to-code 에 맞는 char가 없을 경우 무시한다.

 

사용예

CP949 의 문서를 UTF8 로 변환
iconv -f CP949 -t UTF8 -o output.txt input.txt

 

PHP 에서 사용

PHP 에는 libiconv 가 binding 되어 있으므로 사용할 수 있다. (참고: http://php.net/manual/en/function.iconv.php)

PHP 의 iconv 는 파일대신 string 변수를 파라미터로 받는다.

string iconv ( string $in_charset , string $out_charset , string $str )

 

다음 PHP 파일을 UTF8 로 저장후에 실행

iconv-test.php
<?php

$text = "똠방각하";
echo 'Original : ', $text, PHP_EOL;
echo 'CP949: ', iconv("UTF-8", "CP949", $text), PHP_EOL;
# 아래 문장에서 변환 에러 발생
echo 'EUC-KR: ', iconv("UTF-8", "EUC-KR", $text), PHP_EOL;
?>                                                                    

 

실행하면 은 EUC-KR 에 없는 문자이므로 EUC-KR 로 변환시 //TRANSLIT 옵션이 없을 경우 아래와 같이 에러가 발생되며 //TRANSLIT 옵션이 추가되면 EUC-KR의 비슷한 문자로 대치된다. 

$ php iconv-test.php
 
Original : 똠방각하
CP949: 

        EUC-KR: PHP Notice:  iconv(): Detected an illegal character in input string in iconv-test.php on line 6

 

 

  • No labels