我有两个字符串-一个是从数据库中检索的,另一个是从Web上刮取的-然后将这两个字符串进行比较,以检查是否有更改。
问题在于两个字符串看似相同,在这里:
https://m.atcdn.co.uk/a/media/w267h200pdfdfdf/25bc7a46fdb6499db28370ab693f230c.jpg
https://m.atcdn.co.uk/a/media/w267h200pdfdfdf/25bc7a46fdb6499db28370ab693f230c.jpg
但是,当我在每个字符串上使用Encoding.ASCII.GetBytes()
时,它们都返回两个不同的字节数组。
可能是什么原因造成的?
答案 0 :(得分:3)
您发布的字符串确实相同,所以我认为问题出在其他地方。
我可以想到两个可能的原因:
您没有正确比较这两个数组,因此它们看起来与您不相等。
var bytes1 = Encoding.ASCII.GetBytes("https://m.atcdn.co.uk/a/media/w267h200pdfdfdf/25bc7a46fdb6499db28370ab693f230c.jpg");
var bytes2 = Encoding.ASCII.GetBytes("https://m.atcdn.co.uk/a/media/w267h200pdfdfdf/25bc7a46fdb6499db28370ab693f230c.jpg");
// This will only compare the Reference of both Arrays, not their content:
var equals = bytes1.Equals(bytes2); // bytes1 == bytes2;
// Compare them like this instead:
var equals = bytes1.SequenceEqual(bytes2);
\0
之类的其他字符,这些字符对用户不可见,但会影响字节数组。这是我可以根据您提供给我们的信息想到的仅有两个原因。