您的位置:首页 > 其它

解决Unicode的乱码问题

2011-06-23 20:11 190 查看
今天练习孙鑫老师MFC视频中第五章的文本编辑程序时遇到了一个很令人蛋疼的问题,就是Unicode版本的问题,会出现乱码,大家都知道中文是2个字节的,如果按照非Unicode字符处理,就会出现乱码,试了半天,终于解决,现在把我遇到的问题以及解决方法整理一下:(以孙鑫老师视频中例子为例)大家也可以创建SDK工程,关键是掌握方法。

1。先新建一个工程
2。然后按照视频写好代码,当输入英文时,一切好好的,我想输入中文试试,问题来了,这时按下退格键第一次会显示一个乱码,再按一次才会删除字符,我知道这是由于Unicode的原因,但苦于一直找不出解决方法,就去网上搜,(之前写播放器时想让歌曲名动态滚动时也遇到这个问题),还真搜到了点眉目。
3.网上说要编译Unicode程序就要安装Unicode库

Build-->Configurations-->Add,在Configuration中添加Unicode Debug,这样就添加一个Unicode Debug配置
4 。Build-->Set Active Configuration,选择Win32 Unicode Debug作为当前活动配置
5。在Project-->Settings,在C/C++属性页中选择Preprocessor条目,在Preprocessor definitions中添加编译项 _UNICODE
6.好了,这时心想应该没问题了吧,编译看看,


LINK : fatal error LNK1104: cannot open file "mfco42ud.lib"(不一定是缺少mfco42ud.lib,具体看你机子缺少什么)打不开这个库?再去网上搜,原来是默认的VC不支持Unicode,这该怎么办呢,难不成要重装,我不信邪,再搜,找到了方法,只要将安装盘中你缺少的库拷贝到安装目录下就可以了(我的是D:/安装文件/VC98/MFC/Lib),再试试看那,又来了
error C2593: 'operator +=' is ambiguous 指向m_strLine+=nChar;
查一下ambiguous 什么意思,原来是引起歧义的; 模棱两可的, 含糊不清的,这怎么会呢CString不是重载了+=号吗?再一看,原来m_strLine是CString的,而nChar是UINT的,这个简单,转换一下,

果然。。。
7.这个时候编译应该能通过了,运行一下,

,提示找不到MFCN42UD.DLL(不一定是这个库)这下完了哇,安装程序里只有.lib,没有.dll哇,再去搜一下,在CSDN找到了人家提供的.lib和.dll,嘿嘿,借来用用,将里面的.dll文件拷贝到C:/WINDOWS/system就OK了。
现在运行一下,哈哈,终于被我解决了!!


这是我在MFC中解决的问题,运用到SDK应该是一样的!!!!

以上内容转载于:

http://www.rupeng.com/forum/thread-18313-1-1.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐