Example (iconv_open -- Create Conversion Descriptor)
This example converts an array of characters coded in encoded character set IBM-850 (in in) to an array of characters coded in encoded character set IBM-037 (stored in out).
#include <iconv.h> #include <stdlib.h> #include <stdio.h>
int main(void)
{
const char fromcode[] = "IBM-850";
const char tocode[] = "IBM-037";
iconv_t cd;
char in[] = "ABCDEabcde";
size_t in_size;
char *inptr = in;
char out[100];
size_t out_size = sizeof(out);
char *outptr = out;
int i;
if ((iconv_t)(-1) == (cd = iconv_open(tocode, fromcode))) {
printf("Failed to iconv_open %s to %s.\n", fromcode, tocode);
exit(EXIT_FAILURE);
}
/* Convert the first 3 characters in array "in". */
in_size = 3;
if ((size_t)(-1) == iconv(cd, &inptr, &in_size, &outptr, &out_size)) {
printf("Fail to convert first 3 characters to new code set.\n");
exit(EXIT_FAILURE);
}
/* Convert the rest of the characters in array "in". */
in_size = sizeof(in) - 3;
if ((size_t)(-1) == iconv(cd, &inptr, &in_size, &outptr, &out_size)) {
printf("Fail to convert the rest of the characters to new code set.\n");
exit(EXIT_FAILURE);
}
*outptr = '\0';
printf("The hex representation of string %s are:\n In codepage %s ==> ",
in, fromcode);
for (i = 0; in[i] != '\0'; i++) {
printf("0x%02x ", in[i]);
}
printf("\n In codepage %s ==> ", tocode);
for (i = 0; out[i] != '\0'; i++) {
printf("0x%02x ", out[i]);
}
if (-1 == iconv_close(cd)) {
printf("Fail to iconv_close.\n");
exit(EXIT_FAILURE);
}
return 0;
/****************************************************************************
The output should be similar to :
The hex representation of string ABCDEabcde are:
In codepage IBM-850 ==> 0x41 0x42 0x43 0x44 0x45 0x61 0x62 0x63 0x64 0x65
In codepage IBM-037 ==> 0xc1 0xc2 0xc3 0xc4 0xc5 0x81 0x82 0x83 0x84 0x85
****************************************************************************/
}