UTF-8 to Unicode conversion
        Posted  
        
            by 
                sandeep
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by sandeep
        
        
        
        Published on 2011-01-16T11:30:54Z
        Indexed on 
            2011/01/16
            11:53 UTC
        
        
        Read the original article
        Hit count: 437
        
Hi,
I am having problems with converting UTF-8 to Unicode.
Below is the code:
int charset_convert( char * string, char * to_string,char* charset_from, char* charset_to)
{
    char *from_buf, *to_buf, *pointer;
    size_t inbytesleft, outbytesleft, ret;
    size_t TotalLen;
    iconv_t cd;
    if (!charset_from || !charset_to || !string) /* sanity check */
        return -1;
    if (strlen(string) < 1)
        return 0; /* we are done, nothing to convert */
    cd = iconv_open(charset_to, charset_from);
    /* Did I succeed in getting a conversion descriptor ? */
    if (cd == (iconv_t)(-1)) {
        /* I guess not */
        printf("Failed to convert string from %s to %s ",
              charset_from, charset_to);
        return -1;
    }
    from_buf = string;
    inbytesleft = strlen(string);
    /* allocate max sized buffer, 
       assuming target encoding may be 4 byte unicode */
    outbytesleft = inbytesleft *4 ;
    pointer = to_buf = (char *)malloc(outbytesleft);
    memset(to_buf,0,outbytesleft);
    memset(pointer,0,outbytesleft);
        ret = iconv(cd, &from_buf, &inbytesleft, &pointer, &outbytesleft);ing
    memcpy(to_string,to_buf,(pointer-to_buf);
}
main():
int main()
{    
    char  UTF []= {'A', 'B'};
    char  Unicode[1024]= {0};
    char* ptr;
    int x=0;
    iconv_t cd;
    charset_convert(UTF,Unicode,"UTF-8","UNICODE");
    ptr = Unicode;
    while(*ptr != '\0')
    {   
        printf("Unicode %x \n",*ptr);
        ptr++;
    }
    return 0;
}
It should give A and B but i am getting:
ffffffff
fffffffe
41 
Thanks, Sandeep
© Stack Overflow or respective owner