vc中字符编码转换

一直用php开发,在php开发用字符编码转换很简单只要用iconv函数就可以实现,最近的项目要把vc的数据提交给php处理,在返回给vc结果, 问题来了,vc项目的编码是GB2312,而PHP程序是utf-8编码,导致数据乱码。 看到乱码第一感觉就是编码问题了。 vc中有像iconv这样的函数吗?查msdn没有。恩,看来还是php好用啊。不亏是我喜欢的语言。 vc中怎么实现呢?要utf8->gb2312谷歌到的结果是,要先把utf8转换为unicode编码,在把unicode转换成GB2312。也就是utf8 ->unicode ->gb2312这个过程。 如果要从Gb2312->utf8呢,就类似上面那样了,也就是gb2312->unicode ->utf-8这个过程。至于为什么要先转换成unicode编码呢?我自己也还不清楚。可能和什么是 utf8,gb2312编码有关吧,这里有变文章介绍这些编码。http://www.linuxforum.net/books/UTF-8-Unicode.html 好了看看vc中是怎么实现utf8到unicode编码的。可以用这个函数MultiByteToWideChar() 从unicode到gb2312是用WideCharToMultiByte()这个函数。 我把它写成了一个iconv()函数参数和php的一样下面是代码。

ContractedBlock.gif ExpandedBlockStart.gif Code
 1ExpandedBlockStart.gifContractedBlock.gif/**//**
 2    字符编码转换函数
 3**/

 4CString   iconv(CString &str,int in_charset,int out_charset)
 5ExpandedBlockStart.gifContractedBlock.gif{
 6    WCHAR wsRequest[256];
 7    char  strOut[MAX_PATH];
 8    //转换成unicode 编码
 9    MultiByteToWideChar(in_charset,0,str,strlen(str)+1,wsRequest,sizeof(wsRequest)/sizeof(wsRequest[0]));
10    //unicode 转换成gb 等编码
11    WideCharToMultiByte(out_charset,0,wsRequest,-1,strOut,sizeof(strOut),NULL,NULL);
12 
13 
14 
15    return strOut;
16}

转载于:https://www.cnblogs.com/phpzxh/archive/2009/09/16/1568130.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值