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/
어느 라인에서 에러가 뜨나요?
어느 라인에서 에러가 뜨나요?
제 컴퓨터에서는 그럭저럭 다음처럼 실행됩니다.
댓글 달기