iconv.zip

  • PUDN用户
    了解作者
  • C/C++
    开发工具
  • 4KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2015-11-14 18:48
    上传日期
实现将一种已知的字符集文件转换成另一种已知的字符集文件。
iconv.zip
  • iconv
  • iconv.cpp
    2.1KB
  • hk
    6KB
  • icon.cpp
    913B
内容介绍
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <iconv.h> #include <errno.h> #include <locale.h> #include <fcntl.h> #include <unistd.h> #include <iconv.h> /* * 对字符串进行语言编码转换 * */ int convert(const char *form, const char *to, char *save, int savelen, char *src, int srclen) { iconv_t cd; const char *inbuf = src; char *outbuf = save; size_t outbufsize = savelen; int status = 0; size_t savesize = 0; size_t inbufsize = srclen; const char *inptr = inbuf; size_t insize = inbufsize; char *outptr = outbuf; size_t outsize = outbufsize; cd = iconv_open(to, form); iconv(cd, NULL, NULL, NULL, NULL); if (inbufsize == 0) { status = -1; goto done; } while(insize > 0) { size_t res = iconv(cd, (char**)&inptr, &insize, &outptr, &outsize); if (outptr != outbuf) { int saved_errno = errno; int outsize = outptr-outbuf; strncpy(save+savesize, outbuf, outsize); errno = saved_errno; } if (res == (size_t)(-1)) { if (errno == EILSEQ) { int one = 1; iconvctl(cd, ICONV_SET_DISCARD_ILSEQ, &one); //忽略无效序列并继续转换 status = -3; } } else if (errno == EINVAL) { if (inbufsize == 0) { status = -4; goto done; } else { break; } } else if (errno == E2BIG) { status = -5; goto done; } else { status = -6; goto done; } } status = strlen(save); done: iconv_close(cd); return status; } /* * 例: 字符串(GB2312) unicode * 工作愉快!,->5DE54F5C61095FEBFF01 */ int main(int argc, char *argv[]) { char sdata[40] = {"工作愉快!"}; char ddata[40] = {0}; convert("UTF-8", "GB2312", ddata, sizeof(ddata), sdata, sizeof(sdata)); printf("ddata:%s\r\n",ddata); return 0; }
评论
    相关推荐
    • iconv 库下载
      iconv 库,用于配置libxml2,找了很久,分享给大家
    • cocos2d-x c++的iconv.rar
      extern size_t iconv (iconv_t cd, @ICONV_CONST@ char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft); /* Frees resources allocated for conversion descriptor ‘cd’. */ #ifndef ...
    • iconv库文件
      在android使用iconv必须要用到的库文件
    • iconv 可用
      cocos2dx下可用,好东西,懂的人都知道,需要的就拿走
    • nginx插件iconv
      nginx插件iconv插件源码包,用于转换编码格式,分享出来,也希望有大神能告诉我如何将这个源码编译成so文件,供nginx的loadmodule使用
    • iconv-chunks:使用 iconv 处理大文件
      iconv-chunks - 使用 iconv 处理大文件 概要 iconv-chunks [iconv-options] 描述 标准 iconv 程序将整个输入文件读入内存,这不适用于大文件(例如数据库导出)。 这个脚本只是一个包装器,它以可管理的块处理输入...
    • androd的iconv
      在android下使用的iconv文件,进行编码的转换
    • iconv:iconv 包装器
      iconv 包装器,曾经是 ext/iconv 抽象的 Iconv 是 UNIX 95 iconv()函数系列的包装类,用于在各种编码系统之间转换字符串。 有关更多详细信息,请参阅 Open Group 的在线文档。 iconv.h : iconv_open() : iconv...
    • iconv 1.9.2
      用于编码转换,支持windows/linux等多种平台
    • qpopper2.53.tar.Z
      pop3 server