C#比较字符串 - 不同的代码页

时间:2009-04-24 10:05:47

标签: c# string compare

我从文本文件中读取了两个字符串进行比较,当我尝试将这些文件与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

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

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

我可以正确地比较这两个字符串并匹配那些“&”字符吗?

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

看起来你想要使用StringComparison的重载。 我想如果你想要当前的Senario,你想要“Ordinal”值,但是你可能希望其中一个人放弃你正在做的事情。

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

答案 2 :(得分:1)

嗯,你没有WinMerge或pspad中的.NET字符串,所以在解码时可能会出错。您需要解释完全方案:

  • 文件中的数据(因此是WinMerge / pspad)?
  • 如何在.NET中加载文件?
  • 如何在WinMerge等中加载文件?
编辑:好的,基于评论 - 该文件的编码是什么?你在WinMerge的任何地方都指定它吗? .NET将使用UTF-8(因为您没有指定任何其他编码)。

答案 3 :(得分:1)