VS2015 多字节字符集无效????这是BUG吗?大家有碰到吗?

netpay2007 2016-03-22 04:33:53
用VS2015,建立一个新的MFC的工程,把工程设置为使用多字节字符集,加入一个多字节字符集类,不管怎么编译都是通不过的。如果是UNICODE的就没问题。
如果直接用vs2015打开2015以下版本的多字节字符集项目,是可以编译通过的。但是如果用VS2015新建项目设置成多字节字符集就不行了。
大家碰到过这个问题吗?还是我这里问题?
...全文
9240 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sichuanwww 2019-03-21
  • 打赏
  • 举报
回复
Motolola 2019-03-19
  • 打赏
  • 举报
回复
CString str = _T("11"); CStringA str = "11"; CStringW str = L"11"; 一一对应
宰相孙悟空 2017-04-14
  • 打赏
  • 举报
回复
你需要下载多字节的补丁,默认好像是不支持多字节的
fhw217 2017-04-14
  • 打赏
  • 举报
回复
我的VS2015 Update1正常,也没打MBCS补丁。
赵4老师 2017-04-05
  • 打赏
  • 举报
回复
引用 13 楼 waj19831 的回复:
我经常遇到, 不仅修改字符集无效, 修改其他配置项也无效. 比如把exe改成dll, 再比如修改运行时库, 统统无效. 目前没有找到解决方法, 我这出现了就只能重装.
据说要打多字节字符集补丁。
waj19831 2017-04-02
  • 打赏
  • 举报
回复
我经常遇到, 不仅修改字符集无效, 修改其他配置项也无效. 比如把exe改成dll, 再比如修改运行时库, 统统无效. 目前没有找到解决方法, 我这出现了就只能重装.
  • 打赏
  • 举报
回复 1
检查下你的工程属性或代码中有没有其它地方设置UNICODE或_UNICODE这两个宏。
「已注销」 2017-03-28
  • 打赏
  • 举报
回复
MFC SetWindowText 是对 Windows API 的封装,编码只有一种,当然会有问题了。 而 CString 的运算符重载,一般都会有两个:针对 MBCS 和 Unicode 的不同版本。 一般来说,CString 不管是项目设置为何种编码,都是正确的: CString str1 = "11"; CString str2 = L"11"; CString str3 = _T("11"); // 或 TEXT("11") 而 SetWindowText 则不同,ANSI/MBCS 就必须是: SetWindowText("11"); Unicode 就必须是: SetWindowText(L"11"); 当然,你可以用任意一个 CString 来设置: SetWindowText((LPCTSTR)str1); SetWindowText((LPCTSTR)str2); SetWindowText((LPCTSTR)str3); 那时因为 CString 的运算符重载会将任何编码转换为项目所设置编码,即与 SetWindowText 相符。
走好每一步 2017-03-09
  • 打赏
  • 举报
回复
“”要装MBCS补丁,到ms官网上去找“” 好像是这样
屋卡 2017-03-08
  • 打赏
  • 举报
回复
Cstring 与string 有啥区别
孤客天涯 2016-10-17
  • 打赏
  • 举报
回复
CString str = "11"; SetWindowText("11"); 改成 CString str = _T("11"); SetWindowText(_T("11"));
wst_test 2016-10-16
  • 打赏
  • 举报
回复
C++新标准 默认的char就是utf8字符 个人觉得挺好 最好新工程别再选unicode了 到时候转换的时候 到底是mbcs转utf16还是utf8转16呢?容易造成混乱
ESMGAL 2016-08-31
  • 打赏
  • 举报
回复
我这没事vs2015 update3 而且unicode这个好用干嘛不用?
shenyi0106 2016-08-31
  • 打赏
  • 举报
回复
要装MBCS补丁,到ms官网上去找
Dobzhansky 2016-08-31
  • 打赏
  • 举报
回复
CString str = _T("11");
a452562082 2016-08-31
  • 打赏
  • 举报
回复
没人知道怎么解决么,我也遇到这个问题了
netpay2007 2016-03-22
  • 打赏
  • 举报
回复
vs2015 在项目中设置多字节字符集没有效果,设置了还是在使用Unicode。就算不加其他任何类,新建一个项目,设置成多字节字符集,还是默认使用Unicode编译的。 像这样随便写两句代码: CString str = "11"; SetWindowText("11"); 就会提示报错 error C2440: “初始化”: 无法从“const char [3]”转换为“ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>” note: class“ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>”的构造函数声明为“explicit” error C2664: “void CWnd::SetWindowTextW(LPCTSTR)”: 无法将参数 1 从“const char [3]”转换为“LPCTSTR”
赵4老师 2016-03-22
  • 打赏
  • 举报
回复
莫非是utf8惹的祸?

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧