[해결]iconv를 이용한 EUC-KR -> ISO-2022-KR 변환 질문 입니다.

jafe1210의 이미지

안녕하세요 무더운 여름이네요

죄송하지만 초보적인 질문 좀 하겠습니다.

iconv 라이브러리를 이용해 한글 EUC-KR을 ISO-2022-KR로 변환하려고 합니다.

char inBuffer[128]에 한글이 아닌 영어 알파뱃을 넣으면 iconv함수가 정상적으로 작동하는데
아래 코드와 같이 char inBuffer[128]에 한글을 넣으면 iconv함수가 정상적으로 작동하지 않습니다.

고수님들 무엇이 문제인지 알려주세요

int _tmain(int argc, _TCHAR* argv[])
{
iconv_t charset = iconv_open("EUC-KR", "ISO-2022-KR");
extern int errno;

if ( charset == (iconv_t)-1)
return -1;

char inBuffer[128] = "가나다";
char outBuffer[128] = { 0, };

char* pIn = inBuffer;
char* pOut = outBuffer;
size_t inByte = strlen(inBuffer);
size_t outByte = 4;

size_t ret_iconv = iconv(charset, &pIn, &inByte, &pOut, &outByte);//여기서 pOut에 값이 안들어 가고 리턴값인 ret_iconv에 -1이 들어 갑니다.

if(ret_iconv == -1)
printf("error\n");

iconv_close(charset);
}

jafe1210의 이미지

Iconv_open함수에서 잘못됨

변수 위치가 바뀜
iconv_t charset = iconv_open("EUC-KR", "ISO-2022-KR");가 아니라
iconv_t charset = iconv_open("ISO-2022-KR","EUC-KR"); 이 맞는 거....

레퍼런스 확인 안한 내가 잘못...

익명 사용자의 이미지

위키백과 검색해보세요.