리눅스에서 많은 함수들을 지원하지만 그중에서 iconv의 사용법에 대한 설명이다.
iconv는 아래 예에서 든 캐릭터셋 이외에도 훨씬 많은 캐릭터간의 변환이 가능하다
#include
size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
아래 예제는 euc-kr에서 utf-8로 변환하는 소스이다.
#include
#include
#include
#include
int main()
{
char * sourceP = NULL;
char * destP = NULL;
char sourceBuffer[1024];
char destBuffer[1024];
int size1 = 0;
int size2 = 0;
size_t cc;
iconv_t * it;
printf("input : ");
fgets(sourceBuffer,1024, stdin);
size1 = strlen(sourceBuffer) - 1 ;
size2 = size1 * 3;
it = iconv_open("utf-8", "euc-kr");
if (it == (iconv_t) -1)
{
perror("open");
exit(1);
}
sourceP = sourceBuffer;
destP = destBuffer;
cc = iconv(it,&sourceP, &size1, &destP, &size2);
if (cc == (size_t) -1) {
perror("iconv");
exit(1);
}
//printf("result(%d)%s\n", destP - destBuffer, destBuffer);
printf("result : %s\n", destBuffer);
iconv_close(it);
return 0;
}
ps.
함수에서는
iconv_t iconv_open(const char *tocode, const char *fromcode);
이렇게 쓰지만 iconv 프로그램에서는
iconv -f encoding -t encoding inputfile
이다. FROM과 TO 위치가 달라 헷갈릴수 있다.
'C언어' 카테고리의 다른 글
복잡한 함수포인터 읽기(고급) (0) | 2006.05.08 |
---|---|
복잡한 함수포인터 (고급) (0) | 2006.05.05 |
global(전역변수) & static(정적변수) variable (0) | 2006.03.04 |
가변인자 (0) | 2006.03.04 |
이차원(2차원) 배열 (0) | 2006.03.04 |