我正在尝试通过序列号查找证书。显然双方是平等的,但调试器说他们不是。我在这里想念什么?当我将序列号复制并粘贴到文本编辑器中时,我注意到 IDE 警告我,我不在乎该消息;unicode啊啊啊啊
更新
- 我从证书窗口复制了序列号。
- 打开记事本2新文件。它是默认的 ANSI。粘贴了文字。又抄了一遍。粘贴到VS中。值不相等。
- 将 Notepad2 文件设置为 Unicode。粘贴的序列号。从记事本2复制并粘贴到VS中。现在他们是平等的。
似乎 unicode vs ansi 问题。
我正在尝试通过序列号查找证书。显然双方是平等的,但调试器说他们不是。我在这里想念什么?当我将序列号复制并粘贴到文本编辑器中时,我注意到 IDE 警告我,我不在乎该消息;unicode啊啊啊啊
更新
似乎 unicode vs ansi 问题。
我看不出你如何创建字符串或如何比较它有什么问题。那应该工作得很好。.NET 中的字符串始终是 unicode,因此也不存在可能的编码问题。
手动重新键入串行字符串。粘贴时似乎有一些不寻常的字符,例如不间断空格而不是常规空格。
当我复制时,我选择了“额外空间”。很奇怪,但它没有出现在 IDE 中。如果我仔细选择序列号,一切都会好起来的。
在记事本中显示如下:
?00 c4 aa b9 b1 08 90 5d
它是十六进制 3F 字符(问号),如果它是 unicode,它不会出现在记事本中。在 ANSI 模式下,它变为可见?
据我所知,当使用英文字母数字时,UNICODE 中的比较完美无缺。对于其他语言,有一些警告。
请您提供“可复制”代码,以便我可以在我的机器上检查它吗?(PS:懒得打字了..:o)
另外,请注意 == 仅适用于值类型。您应该使用 EqualsTo() 来比较 ref 类型(这样,您将比较值,而不是引用!)