0

我从文本文件中读取了两个字符串进行比较,当我尝试将这些文件与 winmerge 或 pspad 进行比较时,它们都显示为相同的文本字符串。如果我将它们与以下函数进行比较,它将失败:

string string1 = File.ReadAllText(@"c:\file1.txt");
string string2 = File.ReadAllText(@"c:\file2.txt");    
bool stringMatch = false;
if (string1.Equals(string2, StringComparison.InvariantCulture)){
    stringMatch = true;
}
//stringMatch is false here

经过一番搜索,似乎 " 和 ' 是不同的:

file1.txt 的内容:é"'(§è!çà)-
file2.txt 的内容:é”'(§è!çà)-

有什么方法可以正确比较这两个字符串并匹配那些“&”字符?

4

4 回答 4

1

好吧,您在 WinMerge 或 pspad 中没有 .NET 字符串,因此在解码时很可能会出错。您需要解释您的确切情况:

  • 数据是否在文件中(因此是 WinMerge/pspad)?
  • 您如何在 .NET 中加载文件?
  • 您如何在 WinMerge 等中加载文件?

编辑:好的,根据评论-文件的编码是什么?您是否在任何地方的 WinMerge 中指定它?.NET 将使用 UTF-8(因为您没有指定任何其他编码)。

于 2009-04-24T10:33:58.120 回答
1

您可以将它们都转换为byte[]使用下面的方法System.Text.Encoding ,然后比较byte[]数组

于 2009-04-24T10:08:31.723 回答
1

看起来您想使用采用 StringComparison 的重载。我猜考虑到当前的 senario 你想要“Ordinal”值,但你可能想要其他一个取决于你在做什么。

http://msdn.microsoft.com/en-us/library/system.stringcomparison.aspx

于 2009-04-24T10:14:22.253 回答
1

阅读“每个软件开发人员绝对、肯定必须了解 Unicode 和字符集(没有任何借口!) ”之后,您应该做好自己解决问题的准备。

于 2009-04-24T11:18:34.627 回答