字符编码集转换

//GB2312转换成UCS-2BE

int GB2312_to_UCS2BE(char **content)
{  
      static char temp_des[BUFFLEN] = {0};
      char *des=temp_des;
 
      size_t srcleft=strlen(*content), desleft=BUFFLEN;  
 
      iconv_t cd = iconv_open("UCS-2BE","GB2312"); 
      if(cd == (iconv_t) -1)
     {
           R5_ERROR((" iconv_open ERR!/n"));
           return -1;
     }
 
      int ap = iconv(cd, content, &srcleft, &des, &desleft);
 
 
      if (ap == -1)
     {
        R5_ERROR((" iconv error -- errno: %d/n", errno));
        iconv_close(cd);
        return -1;
     }
 
     iconv_close(cd);
 
     *content=temp_des;
 
     return BUFFLEN-desleft; 
}

 

iconv -l :查看支持的字符编码标识

eg: UCS-2BE UNICODE-1-1 UNICODEBIG CSUNICODE11
UCS-2LE UNICODELITTLE
ISO-10646-UCS-4 UCS-4 CSUCS4
UCS-4BE
UCS-4LE
UTF-16
UTF-16BE

size_t iconv (iconv t cd, char **inbuf, size t *inbytesleft, **outbuf, size t *outbytesleft);

如果转换发生错误,则iconv()返回-1

入转换成功,则inbytesleft的值为0,outbuf的值是原值+inbytesleft,outbytesleft的值是原值-inbytesleft。

详情:查看libc文档(iconv_open()、iconv()、iconv_close())或man iconv

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值