[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, from_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: libl pku edu cn

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