偶然间,用EquipSearch装备查询插件搜索关键字“狗”的时候,发现搜索列表里面竟然有“一夜飞霜”、“羽林枪法”等TC专属物品……
我当时就震精了,TC跟哈士奇之间果然有必然的联系么???
插件过滤物品名字的原理是用string.find函数判断物品名字中是否包含有关键字,如果包含,则返回关键字在物品名字中的起止位数,如果不包含,则返回空值。
但是这个函数是逐位检查字符串对应的ANSI码,一个英文字母或数字对应1位ANSI码,一个汉字对应2位ANSI码,所以函数在作用于汉字上面就有可能出问题:
“狗”的ANSI码是:B9B7
“一夜飞霜”的ANSI码是:D2BB D2B9 B7C9 CBAA
每4位16进制数对应一个汉字,当string.find逐位检查到 D2BB D2B9 B7C9 CBAA时,就认为“一夜飞霜”包含“狗”这个关键字……虽然这里面的B9B7并不应该是一个汉字……
同理,“羽林枪法”的ANSI码是:D3F0 C1D6 C7B9 B7A8
冥冥之中自有天意么……