文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>【原】Linux 与 Windows 通讯中的乱码问题: UTF-8 转 GB2312

【原】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
=================================================

      默认情况下Linux使用UTF-8编码,Windows使用GB2312编码,当 Linux 与 Windows 通讯时,中文字符就会出现乱码,原因就是使用不同字符集造成的。所以,解决办法当然是统一编码方式。     我们可以在Linux下将字符串转换成gb2312后再发给Windows,函数代码如下:

 


#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;
}

 

 

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

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载