字符串比较长度不匹配

时间:2016-08-25 17:56:25

标签: c# string md5

我正在比较两个字符串,一个我从一个服务器收到32个字符的字符串,另一个字符串我用以下代码计算:

string getMd5(string fileName)
{
    using (var md5 = MD5.Create())
    {
        using (var stream = File.OpenRead(fileName))
        {
            return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", "‌​").ToLower();
        }
    }
}

问题是,即使两个字符串看起来相同,比较也会失败,因为上面函数返回的字符串包含的字符多于我收到的字符。请看附图:

enter image description here

那么,我该如何解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:7)

这是因为代码中的"‌​"实际上包含两个不可见的Unicode字符 - 'ZERO WIDTH NON-JOINER' (U+200C)'ZERO WIDTH SPACE' (U+200B)。我的猜测是他们到了那里,因为在某些时候源代码片段经过了诸如Word之类的文字处理器。使用string.Empty或免费使用""