【问题标题】:Comparing strings in different encodings比较不同编码的字符串
【发布时间】:2012-09-06 18:07:47
【问题描述】:

我有一些代码可以发出请求并与预期值进行比较。但是我在将网站上的字符串与代码中的字符串进行比较时遇到问题。我的单元测试代码说:

Assert.AreEqual failed.
Expected: <DEVOLUÇÃO DE VALORES>.
Actual:   <DEVOLUÇÃO DE VALORES>.

我可以做些什么来比较这些值而不考虑字符编码?

【问题讨论】:

  • 向我们展示进行比较的 C#。
  • 由于字符编码是 I/O 的问题,而不是字符串比较的问题,您应该检查您的字符串中是否有任何额外的不可见垃圾字符。我建议使用十六进制转储来比较它们。或者,如果您在浏览器中读取结果,请检查源代码,以防其中一个字符串是 htmlencoded。

标签: c# string character-encoding string-comparison


【解决方案1】:

我只需要使用Normalize 方法:

Assert.AreEqual(expected.Normalize(), actual.Normalize());

注意Normalize 允许您提供规范化表格。如果这样做,则必须在两个字符串中使用相同的形式。

【讨论】:

  • 我遇到了类似的问题。结果发现代码中的文本使用了 Windows 换行符 (\r\n) 和 Normalize 并没有解释这种差异。
【解决方案2】:

忽略文化信息并进行比较。对字符串使用 String.ToUpperInvariant() 并进行比较。

【讨论】:

    猜你喜欢
    • 2014-11-24
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    相关资源
    最近更新 更多