一个由两个长的如此相像的字引起的问题

        之前测试同事打过一个bug:对于人员列表的关键字搜索功能,有个非常奇怪的问题,几乎所有的人员的中文名都能搜到对应的人,就只有某一个人员的名字有问题。这个名字叫“禇XXXX”,由于问题是必现的,觉着相对要好查的多。结果通过调试傻眼了,界面上显示文字是一样的,但是从内存里看,同一个字的Unicode编码竟然是不同的。百思不得其解,于是怀疑是不是服务器侧传过来的字符编码有问题,但是为什么除了这个名字外,其他的都是正常的呢?

        这个问题太诡异了,于是找负责对应模块的同事过来一起看了一下。查看调试时,同事同样也感觉很迷惑。于是建议写个测试程序,将内存中编码一起打印到界面来看看是否一样。结果用测试展现测试结果时,经仔细辨别,发现两个字略有一点点不一样。于是用抓图工具抓取了图片,放大了图片后发现打印出来的两个字确实不一样。于是想到是不是两个字拼音都是“chu”,于是用Sogou输入法验证了一下,确实存在两个十分相近的字:禇、褚(后者比前者多一点)。原因找到了:人员列表中的chu是前者,而我们输入的关键字是后者,所以匹配不上。

        相关的测试如下所示:

    TCHAR achTest1[20] = { 0x7987, 0 };
    TCHAR achTest2[20] = { 0x891a, 0 };

    CString strTest;
    strTest.Format( _T("7987: %s, 891a:%s"), achTest1, achTest2 );
    AfxMessageBox( strTest );

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dvlinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值