分享

linux实现编码转换(gb2312->utf8,utf8->gb2312等)

 guitarhua 2012-05-03
  1. int code_convert(char *from_charset, char *to_charset, char *inbuf, int inlen,
  2.                 char *outbuf, int outlen)
  3. {
  4.         iconv_t cd;
  5.         char **pin = &inbuf;
  6.         char **pout = &outbuf;

  7.         cd = iconv_open(to_charset, from_charset);
  8.         if (cd == 0)
  9.                 return -1;
  10.         memset(outbuf, 0, outlen);
  11.         int rc = iconv(cd, pin, (size_t *) &inlen, pout, (size_t *) &outlen);
  12.         if (rc == -1)
  13.                 return -1;
  14.         iconv_close(cd);
  15.         return outlen;
  16. }

  17. //UNICODE码转为gb18030码
  18. int u2g(char *inbuf, int inlen, char *outbuf, int outlen)
  19. {
  20.         return outlen - code_convert((char *) "utf-8", (char *) "gb18030", inbuf,
  21.                         inlen, outbuf, outlen);
  22. }
  23. //gb18030码转为UNICODE码
  24. int g2u(char *inbuf, int inlen, char *outbuf, int outlen)
  25. {
  26.         return outlen - code_convert((char *) "gb18030", (char *) "utf-8", inbuf,
  27.                         inlen, outbuf, outlen);
  28. }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多