C에서 iconv를 이용한 인코딩 변환

아래는 Euc-Kr을 Utf-8로 변환하는 예제.

#ifndef _UTF8TOEUCKR
#define _UTF8TOEUCKR

#include 
static int UTF8toEUCKR( char *outBuf, int outLength, char *inBuf, int inLength )
{
iconv_t cd = iconv_open( "EUC-KR", "UTF-8" );

int ires = (int)iconv( cd, &inBuf, (size_t*)&inLength, &outBuf, (size_t*)&outLength );

iconv_close(cd);

return ires;
}

#endif

wxWidgets에서 UTF8 로 바꾸기

유니코드로 빌드된 wxWidgets은 내부적으로 UTF8로 모든 문자열이 표현이 되는데, 이때 외부 문자열을 유니코드로 변경할때는 아래와 같이 한다.

char _procname[FILENAME_MAX];
int len = readlink("/proc/self/exe", _procname, FILENAME_MAX - 1);
_procname[len] = '\0';
wxString procname = wxString(_procname, wxConvUTF8);