[해결]iconv를 이용한 EUC-KR -> ISO-2022-KR 변환 질문 입니다.
안녕하세요 무더운 여름이네요
죄송하지만 초보적인 질문 좀 하겠습니다.
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);
}
자답이네요
Iconv_open함수에서 잘못됨
변수 위치가 바뀜
iconv_t charset = iconv_open("EUC-KR", "ISO-2022-KR");가 아니라
iconv_t charset = iconv_open("ISO-2022-KR","EUC-KR"); 이 맞는 거....
레퍼런스 확인 안한 내가 잘못...
euc-kr 이나 iso-2022-kr이나 같은 겁니다;
위키백과 검색해보세요.
댓글 달기