VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 566|回复: 2

[求助] 为什么编码转换函数能在VC6中用,VS2010就不行了

[复制链接]
61_avatar_middle
在线会员 发表于 2016-3-23 09:40:14 | 显示全部楼层 |阅读模式
这是ut8转gbk函数,VC6可以用但是VS2010错误一大堆
void ConvertUtf8ToGBK(CString& strUtf8)
{
    int len = MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);
    unsigned short * wszGBK = new unsigned short[len+1];
    memset(wszGBK, 0, len * 2 + 2);
    MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszGBK, len);
    len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL); 
    char *szGBK=new char[len + 1];
    memset(szGBK, 0, len + 1);
    WideCharToMultiByte (CP_ACP, 0, wszGBK, -1, szGBK, len, NULL,NULL);
    strUtf8 = szGBK;
    delete[] szGBK;
    delete[] wszGBK;
}

   




上一篇:Gh0st屏幕监控问题
下一篇:这个论坛关于VC网页编码转换好少啊
51_avatar_middle
online_admins 发表于 2016-3-23 10:50:31 | 显示全部楼层
你这个函数只适用于工程编码为多字节的情况,如果当前工程编码是Unicode的话就不适用了。
本身 MultiByteToWideChar 的第三个参数需要的是 char * 类型的参数,如果当前工程编码为 Unicode,那么 (LPCTSTR)strUtf8 的类型默认就是 wchar_t * 的宽字节类型,所以肯定不行喽
61_avatar_middle
ico_lz  楼主| 发表于 2016-3-23 10:52:39 | 显示全部楼层
那怎么解决,求大神指教
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-6-20 02:14

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表