2009-04-24 57 views
0

我从文本文件中读入两个字符串进行比较,当我尝试将这些文件与winmerge或pspad进行比较时,它们都显示为相同的文本字符串。如果我用下面的函数对它们进行比较,它失败:C#比较字符串 - 不同的代码页

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 

经过一番搜索这似乎是一个“和”是不同的:

 
Content of file1.txt: é"'(§è!çà)- 
Content of file2.txt: é”’(§è!çà)- 

什么办法可以恰当地比较这两个字符串并匹配那些“&”字符?

回答

1

你可以使用方法他们两个转换为byte[]System.Text.Encoding 下,然后比较byte[]阵列

1

好了,你不具备的WinMerge或pspad的.NET字符串,所以事情就可以很好地同时解码走错了。你需要解释你确切场景:

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

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

+0

1)数据位于* .txt文件中 2)文件正在读取字符串string1 = File.ReadAllText(@“c:\ file1.txt”) 3)我只是打开file1并使用“文本区别与file2.txt”选项。 – Carra 2009-04-24 10:40:14