[xml] How to use iconv library to convert a UTF-8 string to GB2312 string

Dear All,

  I'd like to develop a program dealing with XML documents which contain
Chinese text encoded in GB2312. I used the libxml2 library. Unfortunately, I
encountered problems while converting a UTF-8 string to GB2312 string using
iconv library. Below is the codes I wrote. Would you please give me some
hints about how to solve this problem? Thanks very much!

/*function invocation:*/

fprintf(stdout, "The converted result is %s\n",
codesetswitch("UTF-8","GB2312", UTF_8_String));


/*function declaration:*/

char *strcodechange(const char *from_code, const char *to_code, unsigned
char *instr)
 iconv_t cd;
 char from[BUFSIZ], to[BUFSIZ];
// char *from_code, *to_code;
 char *tptr;
 const char *fptr;
 size_t ileft, oleft, ret;

 cd = iconv_open((const char *)to_code, (const char *)from_code);

 strcpy(from, (const char *)instr);


 if (cd == (iconv_t)-1)
  /** iconv_open failed*/
  (void) fprintf(stderr, "iconv_open(%s, %s) failed\\n", to_code,
  return NULL;

 fptr = from;
 tptr = to;
 oleft = BUFSIZ;
 ret = iconv(cd, &fptr, &ileft, &tptr, &oleft);
 if (ret != (size_t)-1)
  /** iconv succeeded*/
  (void) fprintf(stdout,"string:%s ; result: %s\n", from, to);
  (void)fprintf(stderr, "iconv error!\n");
  return NULL;

 (void) iconv_close(cd);

 return to;

iconv error!


  Best regards,

  Li Baoli

Li Baoli
Institute of Computational Linguistics
Department of Computer Science and Technology
Peking University
Beijing, 100871   Phone: 86-10-6276 5835 ext 203
P.R. China        Email: libaoli btamail net cn

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]