리눅스에서 많은 함수들을 지원하지만 그중에서 iconv의 사용법에 대한 설명이다.
iconv는 아래 예에서 든 캐릭터셋 이외에도 훨씬 많은 캐릭터간의 변환이 가능하다
#include
size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
아래 예제는 utf-8에서 euc-kr로 변환하는 소스이다
#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;
}