You'd better off with iconv to convert from character sets.
Here is some sample code, (edited while under ISO-8859-1 encoding):
Code:
#include <iconv.h>
main()
{
iconv_t it;
size_t il=16;
char *ibuf=calloc(il, 1);
size_t ol=64;
char *obuf=malloc(64);
char *toCode="UTF8";
char *fromCode="ISO-8859-1";
strncpy(ibuf, "çà va où ?", il);
it=iconv_open(toCode, fromCode);
if(it!=(iconv_t)-1)
{
size_t c;
char *source=ibuf;
char *result=obuf;
il=strlen(ibuf);
if(iconv(it, (const char **)&ibuf, &il, &obuf, &ol)!=-1)
{
printf("%s -> %s\n", source, result);
}
else
{
perror("iconv");
}
iconv_close(it);
}
else
{
perror("iconv_open");
}
}
Its output:
Code:
çà va où ? -> çà va où ?