1

我正在尝试通过序列号查找证书。显然双方是平等的,但调试器说他们不是。我在这里想念什么?当我将序列号复制并粘贴到文本编辑器中时,我注意到 IDE 警告我,我不在乎该消息;unicode啊啊啊啊

更新

  1. 我从证书窗口复制了序列号。
  2. 打开记事本2新文件。它是默认的 ANSI。粘贴了文字。又抄了一遍。粘贴到VS中。值不相等。
  3. 将 Notepad2 文件设置为 Unicode。粘贴的序列号。从记事本2复制并粘贴到VS中。现在他们是平等的。

似乎 unicode vs ansi 问题。

序列号.png

4

4 回答 4

3

我看不出你如何创建字符串或如何比较它有什么问题。那应该工作得很好。.NET 中的字符串始终是 unicode,因此也不存在可能的编码问题。

手动重新键入串行字符串。粘贴时似乎有一些不寻常的字符,例如不间断空格而不是常规空格。

于 2013-02-19T09:37:35.367 回答
2

当我复制时,我选择了“额外空间”。很奇怪,但它没有出现在 IDE 中。如果我仔细选择序列号,一切都会好起来的。

在记事本中显示如下:

?00 c4 aa b9 b1 08 90 5d

它是十六进制 3F 字符(问号),如果它是 unicode,它不会出现在记事本中。在 ANSI 模式下,它变为可见?

差异.png

于 2013-02-19T10:01:58.117 回答
0

据我所知,当使用英文字母数字时,UNICODE 中的比较完美无缺。对于其他语言,有一些警告。

请您提供“可复制”代码,以便我可以在我的机器上检查它吗?(PS:懒得打字了..:o)

另外,请注意 == 仅适用于值类型。您应该使用 EqualsTo() 来比较 ref 类型(这样,您将比较值,而不是引用!)

于 2013-02-19T09:24:05.790 回答
-2

代替

operator==

你应该使用

string.Equals(object Obj)

方法。"==" 测试引用而不是内容的相等性。

请参阅MSDN以获取更多参考。

于 2013-02-19T09:23:11.670 回答