linux 文件 utf8 c语言,linux下C语言utf-8编码与gb2312转换代码[转cu]

#include #include "SDKpub.h"

#ifndef ERRFILE

#define ERRFILE "errlog"

#endif

char * EncodingConv(  const char * in, char *encFrom, char *encTo )

{

char *buff, *sin, *sout;

int lenin, lenout;

iconv_t ct;

if( (ct=iconv_open(encTo, encFrom)) == (iconv_t)-1 )

{

SDKerrlog( ERRFILE, "%s|%d| iconv_open error! %s", __FILE__,

__LINE__, strerror(errno) );

return( NULL );

}

iconv( ct, NULL, NULL, NULL, NULL );

sin = (char *)in;

lenin  = strlen(in) + 1;

if( (buff=malloc( lenin*2 ))==NULL )

{

SDKerrlog( ERRFILE, "%s|%d| malloc error! %s", __FILE__, __LINE__,

strerror(errno) );

iconv_close( ct );

return( NULL );

}

sout   = buff;

lenout = lenin*2;

if( iconv( ct, &sin, (size_t *)&lenin, &sout, (size_t *)&lenout) == -1 )

{

SDKerrlog( ERRFILE, "%s|%d| iconv() error! errno=%d %s", __FILE__,

__LINE__, errno, strerror(errno) );

free( buff );

iconv_close( ct );

return NULL;

}

iconv_close( ct );

sout=strdup(buff);

free( buff );

return( sout );

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值