MFC测试2

本文详细探讨了Microsoft Foundation Classes (MFC) 的使用,主要关注C++编程在Windows环境下的应用。通过实例分析,解释了MFC如何简化窗口、消息处理和用户界面组件的创建。同时,文章还分享了一些提高MFC项目效率和代码质量的技巧。
摘要由CSDN通过智能技术生成
在windows下打开一个记事本,保存文件,下面有四种编码选择。ANSI,也就是多字节字符集,在VC中也就是CHAR(char)字符串。Unicode,就是UTF16,在VC中也就是WCHAR(wchar_t)字符串。Unicode big endian ,就是UTF32,这种编码用的比较少。UTF8,网页上几乎都是用UTF8,UTF8用1-4个字节来编码所有的字符,英文只需要1个 字节,中文需要3-4个字节。比起UTF16来说,UTF8这样可以尽可能的节省网络带宽,因为在网络上传输的字符,大部分以英文为主。UTF16至少是2个字节,部分字符4个字节。

如果我们写一个VC程序,从获取HTML网页数据,这些数据的编码是UTF8的,获取到我们VC程序中的CHAR字符数组中时就会发现,英文可以正常显示,中文全部乱码了。因为我们的CHAR型字符串用的是ANSI编码。要想把UTF8转换为ANSI,一般有两种方法。一种是手工写代码实现,百度上搜索可以发现很多资料,透彻了解这些字符集编码后,可以手工来实现转换,网上也有很多别人写好的转换函数。一种方法就是借助第三方函数库。由于我们在windows平台下编写程序,我们可以使用API函数来转换MultiByteToWideChar和WideCharToMultiByte。使用这个函数,我们得进行两次转换,先用MultiByteToWideChar把UTF8编码的CHAR字符串转换成WCHAR字符串,第一个参数要注明我们要转换的代码页为CP_UTF8,即UTF8的意思。然后用WideCharToMultiByte吧WCHAR字符串转换成CHAR字符串,第一个参数使用936936代码页的意思是简体中文。有关代码页的知识可以百度百科一下。

下面贴出我写的两个ANSI与UTF8互转的函数。参数为MFC中的CString字符串,如果要传入C样式的字符数组型字符串,只需稍加修改即可。

//UTF8转ANSI
void UTF8toANSI(CString &strUTF8)
{
   
//获取转换为多字节后需要的缓冲区大小,创建多字节缓冲区
UINT nLen = MultiByteToWideChar(CP_UTF8,NULL,</
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值