正常情况下这个Windows API的匹配是不区分大小写的,但是下面的这种却是区分大小写的:
static const WCHAR pattern[] = L"的f";
const auto matched = PathMatchSpecW(L"的F", pattern);
原因居然是其内部用IsDBCSLeadByte()判断汉字'的'的UTF-16编码0x7684的首字节0x84是半个汉字编码,后续的f和F的比较就区分大小写了。
对纯纯的UTF-16字符串里的字节用IsDBCSLeadByte()判断处理,有点匪夷所思
--
修改:z16166 FROM 221.218.161.*
FROM 221.218.161.*