文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>linux下C语言utf-8编码与gb2312转换代码

linux下C语言utf-8编码与gb2312转换代码

时间:2010-04-21  来源:admin126com

转自:
http://bbs2.chinaunix.net/thread-1684280-1-1.html

楼主,我给你一段代码。在linux gsoap和java axis webservice传数据屡试不爽。。。

int code_convert(char *from_charset, char *to_charset, char *inbuf, int inlen, char *outbuf, int outlen)
{
iconv_t cd;
int rc;
char **pin = &inbuf;
char **pout = &outbuf;

cd = iconv_open(to_charset, from_charset);

if (cd == 0)
return 1;

memset(outbuf, 0, outlen);

if (iconv(cd, pin, &inlen, pout, &outlen) == -1)
return 1;

iconv_close(cd);
return 0;
}



我也发一个自己写的程序,一直在用的

/******************************************************
EncodingConv.c
使用iconv进行字符编码转换
SUNLAN
2006/08/17
******************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <iconv.h>
#include <errno.h>
#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 );
}

over
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载