解决Unicode的乱码问题

在使用MFC开发文本编辑程序时遇到Unicode导致的乱码问题,通过新增Unicode Debug配置,设置预处理器定义,以及解决缺失库文件和DLL问题,最终成功解决中文乱码并确保程序运行正常。
摘要由CSDN通过智能技术生成

今天练习孙鑫老师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_strLineCString的,而nCharUINT的,这个简单,转换一下, 果然。。。
    7.这个时候编译应该能通过了,运行一下, ,提示找不到MFCN42UD.DLL(不一定是这个库)这下完了哇,安装程序里只有.lib,没有.dll哇,再去搜一下,在CSDN找到了人家提供的.lib.dll,嘿嘿,借来用用,将里面的.dll文件拷贝到C:/WINDOWS/systemOK了。
现在运行一下,哈哈,终于被我解决了!!

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

以上内容转载于:

http://www.rupeng.com/forum/thread-18313-1-1.html

升级Unicode乱码问题主要是指在一些旧版本的操作系统或软件中,对于Unicode字符的支持不完善导致的字符显示乱码或无法正常显示的问题。 要解决这个问题,可以采取以下几种方法: 1. 更新操作系统和软件版本:升级操作系统和相关软件至最新版本,因为新版本通常会修复Unicode字符显示的问题,提供更好的支持。通过系统更新或软件升级功能进行更新。 2. 安装并使用Unicode字体:Unicode字符需要使用特定的字体才能正确显示。安装适合Unicode字符的字体,例如Arial Unicode MS、Microsoft YaHei等,这些字体包含了广泛的Unicode字符集,可以很好地支持Unicode字符的显示。 3. 设置Unicode编码方式:有些操作系统或软件在默认情况下可能没有正确设置Unicode编码方式,导致字符显示乱码。可以在操作系统或软件的设置中,将编码方式设置为UTF-8或其他适合的Unicode编码方式,确保字符能够正确解析和显示。 4. 检查文本文件编码:在编辑或打开文本文件时,确保选择正确的编码方式。例如,在编辑器中选择UTF-8编码,以确保文本文件中的Unicode字符能够正常显示。 通过以上方法,可以解决Unicode乱码问题,确保字符能够正确显示。然而,由于不同的操作系统和软件版本有所差异,具体的解决方法可能会有所不同。因此,在解决乱码问题时,还需要根据具体情况进行针对性的调整和尝试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值