iconv() 에서 utf16-le 변환에 대한 질문입니다.
글쓴이: lovejin0309 / 작성시간: 금, 2006/07/21 - 10:38오전
언어 : c
GNU의 libiconv 를 사용해서 인코딩을 변환하는 프로그램을 짜고 있습니다.
UTF-8, UTF-7 을 EUC-KR 로 변환하는 것은 잘 동작하는데 UTF-16LE 를 EUC-KR 로 변환하는 부분이 잘 안되고 있습니다.
iconv() 를 사용할 때, 다음과 같이 사용합니다.
iconv(ic, (char **)&msgbuf, &in_left, &p_out_buf, &out_left);
ln_left 와 out_left는 strlen(msgbuf) 를 사용해서 셋팅을 하고 있습니다.
디버깅을 해 보니까 utf-8, utf-7 의 경우는 strlen(msgbuf) 로 길이를 알아낼 수 있지만, utf16-le 는 중간 중간 널 문자가 존재하기 때문ㅇ strlen(msgbuf)로 길이를 알아 낼수 없었습니다.
정리하자면
in_left = strlen(msgbuf);
out_left = strlen(msgbuf);
인데 utf16-LE일 경우에는 모두 길이가 1로 정해지기 때문에 그런 문제가 생기는 것입니다.
어떤 해결 방법이 없을까요?
Forums:
in_left는 처음 한번만
in_left는 처음 한번만 넣어주면 되는 것인데 처음 입력 데이터의 길이를 모르시나요?
댓글 달기