解决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.好了,这时心想应该没问题了吧,编译看看,
![](http://writeblog.csdn.net/images/smilies/grapeman/01.gif)
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的,这个简单,转换一下,
![](http://writeblog.csdn.net/images/smilies/grapeman/22.gif)
果然。。。
7.这个时候编译应该能通过了,运行一下,
![](http://writeblog.csdn.net/images/smilies/grapeman/02.gif)
,提示找不到MFCN42UD.DLL(不一定是这个库)这下完了哇,安装程序里只有.lib,没有.dll哇,再去搜一下,在CSDN找到了人家提供的.lib和.dll,嘿嘿,借来用用,将里面的.dll文件拷贝到C:/WINDOWS/system就OK了。
现在运行一下,哈哈,终于被我解决了!!
![](http://writeblog.csdn.net/images/smilies/grapeman/19.gif)
这是我在MFC中解决的问题,运用到SDK应该是一样的!!!!
以上内容转载于:
http://www.rupeng.com/forum/thread-18313-1-1.html
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.好了,这时心想应该没问题了吧,编译看看,
![](http://writeblog.csdn.net/images/smilies/grapeman/01.gif)
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的,这个简单,转换一下,
![](http://writeblog.csdn.net/images/smilies/grapeman/22.gif)
果然。。。
7.这个时候编译应该能通过了,运行一下,
![](http://writeblog.csdn.net/images/smilies/grapeman/02.gif)
,提示找不到MFCN42UD.DLL(不一定是这个库)这下完了哇,安装程序里只有.lib,没有.dll哇,再去搜一下,在CSDN找到了人家提供的.lib和.dll,嘿嘿,借来用用,将里面的.dll文件拷贝到C:/WINDOWS/system就OK了。
现在运行一下,哈哈,终于被我解决了!!
![](http://writeblog.csdn.net/images/smilies/grapeman/19.gif)
这是我在MFC中解决的问题,运用到SDK应该是一样的!!!!
以上内容转载于:
http://www.rupeng.com/forum/thread-18313-1-1.html
相关文章推荐
- 聊聊计算机中的编码(Unicode,GBK,ASCII,utf8,utf16,ISO8859-1等)以及乱码问题的解决办法
- unicode和多字节字符中CString转string方法,可解决中文乱码的问题
- 解决PHP执行乱码、每次都要手动更改Firefox Unicode设置问题
- php读取淘宝数据包csv文件 unicode ucs-2 utf-16 中文乱码问题解决
- _tfopen_s UNICODE 解决乱码问题
- 【Spring】解决 @ResponseBody返回中文字符串乱码以及生僻字被强制以unicode方式显示问题
- ReadString在UNICODE下中文乱码的解决办法(Char型字符和Unicode字符的转换问题)
- MFC 多字节和UNICODE的相互转换(解决中文utf8-ASCNII乱码问题)
- 关于解决乱码问题的一点探索之二(涉及Unicode(utf-16)和GBK)
- 解决 iOS NSDictionary 输出中文字符”乱码”(Unicode编码)问题
- [UnicodeEncodeError]:Django中解决URL中文解释乱码问题
- 解决 iOS NSDictionary 输出中文字符”乱码”(Unicode编码)问题
- Jsoncpp 中文汉字unicode乱码解决及标点问题解决
- ReadString在UNICODE下中文乱码的解决办法(Char型字符和Unicode字符的转换问题)
- 聊聊计算机中的编码(Unicode,GBK,ASCII,utf8,utf16,ISO8859-1等)以及乱码问题的解决办法
- 解决VS2005打开js文件,中文都是乱码的问题
- 解决Django admin 插入中文时候出现乱码问题
- 中文传值火狐、google浏览器无问题,但IE有乱码问题的解决
- smarty截取中文乱码问题解决办法---转载