Development
[Development]iconv
알 수 없는 사용자
2008. 7. 29. 20:39
- iconv?
* HomePage : http://www.gnu.org/software/libiconv/
* 문자 인코딩간 변환을 수행하는 라이브러리
- iconv 예제
* HomePage : http://www.gnu.org/software/libiconv/
* 문자 인코딩간 변환을 수행하는 라이브러리
- iconv 예제
#include <iconv.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
# define BTN_VIDEO_LB "비디오"
int euckr2utf8( char *inbuf, char *outbuf )
{
size_t inbytesleft;
size_t outbyteleft;
char *inbuf_p = inbuf;
char *outbuf_p = outbuf;
iconv_t cd = iconv_open( "UTF8", "EUC-KR" );
if ( cd < 0 )
{
perror( "iconv" );
return 1;
}
inbytesleft = strlen( inbuf );
assert( inbytesleft != 0 );
printf( "inbytesleft %d \n", inbytesleft );
outbyteleft = 999;
iconv( cd, &inbuf_p, &inbytesleft, &outbuf_p, &outbyteleft );
printf( "outbyteleft %d\n", outbyteleft );
iconv_close( cd );
return 0;
}
int utf82euckr( char *inbuf, char *outbuf )
{
size_t inbytesleft;
size_t outbyteleft;
char *inbuf_p = inbuf;
char *outbuf_p = outbuf;
iconv_t cd = iconv_open( "EUC-KR", "UTF8" );
if ( cd < 0 )
{
perror( "iconv" );
return 1;
}
inbytesleft = strlen( inbuf );
assert( inbytesleft != 0 );
printf( "inbytesleft %d \n", inbytesleft );
outbyteleft = 999;
iconv( cd, &inbuf_p, &inbytesleft, &outbuf_p, &outbyteleft );
printf( "outbyteleft %d\n", outbyteleft );
iconv_close( cd );
return 0;
}
int main( int argc, char *argv[] )
{
char buf[ 100 ];
char buf2[ 100 ];
printf( "org %s, len (%d)\n", BTN_VIDEO_LB, strlen( BTN_VIDEO_LB ) );
euckr2utf8( BTN_VIDEO_LB, buf );
printf( "orig -> utf8 : %s, len (%d)\n", buf, strlen( buf ) );
utf82euckr( buf, buf2 );
printf( "utf8 -> euckr : %s, len (%d)\n", buf2, strlen( buf2 ) );
return 0;
}
#include <stdio.h>
#include <string.h>
#include <assert.h>
# define BTN_VIDEO_LB "비디오"
int euckr2utf8( char *inbuf, char *outbuf )
{
size_t inbytesleft;
size_t outbyteleft;
char *inbuf_p = inbuf;
char *outbuf_p = outbuf;
iconv_t cd = iconv_open( "UTF8", "EUC-KR" );
if ( cd < 0 )
{
perror( "iconv" );
return 1;
}
inbytesleft = strlen( inbuf );
assert( inbytesleft != 0 );
printf( "inbytesleft %d \n", inbytesleft );
outbyteleft = 999;
iconv( cd, &inbuf_p, &inbytesleft, &outbuf_p, &outbyteleft );
printf( "outbyteleft %d\n", outbyteleft );
iconv_close( cd );
return 0;
}
int utf82euckr( char *inbuf, char *outbuf )
{
size_t inbytesleft;
size_t outbyteleft;
char *inbuf_p = inbuf;
char *outbuf_p = outbuf;
iconv_t cd = iconv_open( "EUC-KR", "UTF8" );
if ( cd < 0 )
{
perror( "iconv" );
return 1;
}
inbytesleft = strlen( inbuf );
assert( inbytesleft != 0 );
printf( "inbytesleft %d \n", inbytesleft );
outbyteleft = 999;
iconv( cd, &inbuf_p, &inbytesleft, &outbuf_p, &outbyteleft );
printf( "outbyteleft %d\n", outbyteleft );
iconv_close( cd );
return 0;
}
int main( int argc, char *argv[] )
{
char buf[ 100 ];
char buf2[ 100 ];
printf( "org %s, len (%d)\n", BTN_VIDEO_LB, strlen( BTN_VIDEO_LB ) );
euckr2utf8( BTN_VIDEO_LB, buf );
printf( "orig -> utf8 : %s, len (%d)\n", buf, strlen( buf ) );
utf82euckr( buf, buf2 );
printf( "utf8 -> euckr : %s, len (%d)\n", buf2, strlen( buf2 ) );
return 0;
}