【原】Linux 与 Windows 通讯中的乱码问题: UTF-8 转 GB2312
时间:2010-09-27 来源:He,YuanHui
=================================================
本文为khler原作,转载必须确保本文完整并完整保留原作者信息及本文原始链接
E-mail: [email protected]
QQ: 23381103
MSN: [email protected]
原址:http://www.cnblogs.com/khler/archive/2010/09/27/1836559.html
=================================================
#include <stddef.h>
#include <iconv.h>
#include <assert.h>
#include <stdio.h>
#include <cstring>
/**********************************************************************
* 函数名称: UTF8ToGB2312
* 功能描述: UTF-8 字符串转换 GB2312 函数
* 访问的表: 无
* 修改的表: 无
* 输入参数:
* char* srcStr,UTF-8字符串
* 输出参数:
* char* desBuff:接收GB2312转换结果的缓存;
* int desBuffLength:指定接收转换结果的缓存大小
* 返 回 值: 转换大小
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* -----------------------------------------------
* 2010.09.27 V1.0 HYH Create
*
***********************************************************************/
int UTF8ToGB2312(char* srcStr, char* desBuff, size_t desBuffLength)
{
assert(strlen(srcStr)>0);
size_t iLen = strlen(srcStr);
iconv_t cd;
cd = iconv_open("gb2312","utf-8");
assert(cd != 0);
iconv(cd, &srcStr, &iLen, &desBuff, &desBuffLength);
iconv_close(cd);
return desBuffLength;
}
GB2312转换到UTF8就很简单了:
/**********************************************************************
* 函数名称: GB2312ToUTF8
* 功能描述: GB2312 字符串转换 UTF-8 函数
* 访问的表: 无
* 修改的表: 无
* 输入参数:
* char* srcStr,GB2312字符串
* 输出参数:
* char* desBuff:接收UTF-8转换结果的缓存;
* int desBuffLength:指定接收转换结果的缓存大小
* 返 回 值: 转换大小
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* -----------------------------------------------
* 2010.09.27 V1.0 HYH Create
*
***********************************************************************/
int GB2312ToUTF8(char* srcStr, char* desBuff, size_t desBuffLength)
{
assert(strlen(srcStr)>0);
size_t iLen = strlen(srcStr);
iconv_t cd;
cd = iconv_open("utf-8","gb2312");
assert(cd != 0);
iconv(cd, &srcStr, &iLen, &desBuff, &desBuffLength);
iconv_close(cd);
return desBuffLength;
}
相关阅读 更多 +