XML---(3) UTF-8 GB2312转换及反向转换
来源:互联网 发布:马克思主义学院 知乎 编辑:程序博客网 时间:2024/05/18 20:53
/********************************************************************
created: 2007/11/15
created: 15:11:2007 10:30
filename: wxb_codeConv.c
author: Wang xuebin
depend: iconv.lib
build: 不需要build,被包含到其它源代码中
purpose: 提供从UTF-8到GB2312的内码转换,以及反向的转换
*********************************************************************/
#include "iconv.h"
#include <string.h>
//代码转换:从一种编码转为另一种编码
int code_convert(char* from_charset, char* to_charset, char* inbuf,
int inlen, char* outbuf, int outlen)
{
iconv_t cd;
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,(const char**)pin,(unsigned int *)&inlen,pout,(unsigned int*)&outlen)
== -1)
return -1;
iconv_close(cd);
return 0;
}
//UNICODE码转为GB2312码
//成功则返回一个动态分配的char*变量,需要在使用完毕后手动free,失败返回NULL
char* u2g(char *inbuf)
{
int nOutLen = 2 * strlen(inbuf) - 1;
char* szOut = (char*)malloc(nOutLen);
if (-1 == code_convert("utf-8","gb2312",inbuf,strlen(inbuf),szOut,nOutLen))
{
free(szOut);
szOut = NULL;
}
return szOut;
}
//GB2312码转为UNICODE码
//成功则返回一个动态分配的char*变量,需要在使用完毕后手动free,失败返回NULL
char* g2u(char *inbuf)
{
int nOutLen = 2 * strlen(inbuf) - 1;
char* szOut = (char*)malloc(nOutLen);
if (-1 == code_convert("gb2312","utf-8",inbuf,strlen(inbuf),szOut,nOutLen))
{
free(szOut);
szOut = NULL;
}
return szOut;
}
- XML---(3) UTF-8 GB2312转换及反向转换
- ASP汉字转换UTF-8及UTF-8转换GB2312
- UTF-8转换GB2312
- GB2312 <-> UTF-8 转换
- gb2312 utf-8判断及转换
- gb2312 utf-8 相互转换
- UTF-8转换GB2312函数
- java UTF-8转换GB2312
- UTF-8 转换成 GB2312
- UTF-8转换GB2312函数
- 编码转换utf-8/gb2312
- UTF-8和GB2312转换
- ASP汉字转换UTF-8以及UTF-8转换GB2312
- GB2312和Utf-8编码的转换[3]
- 字符集之间转换(UTF-8,UNICODE,Gb2312)
- 字符集之间转换(UTF-8,UNICODE,Gb2312)
- 关于GB2312与UTF-8的转换
- 字符集之间转换(UTF-8,UNICODE,Gb2312)
- android发送短信和打电话
- 不同的服务器查询数据
- 只能输入数字
- XML---(2)LIBXML2库Linux使用指南
- 理解java的File
- XML---(3) UTF-8 GB2312转换及反向转换
- 终于把代码重写完了
- 配置RIPv2的认证特性
- 重写、多态、抽象、接口
- 合并两个有序数组
- {精华导航专用贴}软件动态与下载精华导航——{7月17日更新}
- 关于BUG_ON()的一点笔记
- 设置控件的背景颜色。
- new重载