C언어 iconv_open() Invalid argument error
글쓴이: rcow93 / 작성시간: 월, 2018/04/30 - 4:39오후
iconv에 대해서 공부중입니다.
EUC-KR형태로 기본 설정이 되어있어서
UTF-8로 인코딩을 하고 싶은데
Invalid argument error가 도저히 해결이 안됩니다.
고수분들의 조언 부탁드리겠습니다.
int main()
{
//iconv_t cd = iconv_open("UNICODE","UTF-8");
iconv_t cd = iconv_open("UTF-8","EUC-KR");
if( cd == (iconv_t)-1)
{
//printf("iconv_open error\n");
perror("iconv_open error");
return 0;
}
//char inbuff[BUFF_SIZE] = "HELLO world";
char inbuff[BUFF_SIZE] = "한글";
int inbufsize = sizeof(inbuff);
char outbuff[BUFF_SIZE];
int outbuffsize = sizeof(outbuff);
memset(outbuff, 0 , outbuffsize);
size_t readbyte = strlen(inbuff);
size_t writebyte = sizeof(outbuff);
char* in = inbuff;
char* out = outbuff;
printf("readBytes:%d writeBytes:%d\n",readbyte,writebyte);
printf("%s\n",inbuff);
if( IsUTF8Encode(inbuff) )
{
printf("utf-8\n");
}
else
{
printf("no utf-8\n");
}
if( iconv(cd, &in, &readbyte, &out, &writebyte) == -1)
{
printf("failed to iconv error\n");
}
else
{
int idx;
printf("in:%x out:%x\n",in,out);
printf("readBytes:%d writeBytes:%d\n",readbyte,writebyte);
for(idx=0;idx<BUFF_SIZE;idx++)
{
printf("%03d %c %x\t\t", idx, inbuff[idx], inbuff[idx]);
printf("%03d %c %x\n", idx, outbuff[idx], outbuff[idx]);
}
outbuff[writebyte] = '\0';
if( IsUTF8Encode(outbuff) )
{
printf("utf-8\n");
}
else
{
printf("no utf-8\n");
}
printf("%s\n",outbuff);
}
iconv_close( cd );
return 0;
}Forums:


gcc -Wall -o
gcc -Wall -o encodetest encodetest.c
해 보니 에러 메시지가 많이 나오네요.
encodetest 는 제가 임의로 준 이름이니 편한 이름으로 쓰세요.
를 위에 붙여서 컴파일 해 보았습니다.
에러가 줄긴 했는데... 여전히 에러가 나네요.
BUFF_SIZE 가 뭔지도 모르겠고... 이건 질문한 분이 아실 듯.
하나씩 하나씩 해 보셔요.
그리고 어디에서 어떤 에러 메시지가 나는지도 설명해주시고요.
man iconv_open
잘 읽어보시고...
잘 해결하시길...
세벌 https://sebuls.blogspot.kr/
어느 라인에서 에러가 뜨나요?
어느 라인에서 에러가 뜨나요?
제 컴퓨터에서는 그럭저럭 다음처럼 실행됩니다.
댓글 달기