您的位置:首页 > 其它

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

2014-03-21 23:04 302 查看
之前测试同事打过一个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 );
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐