C # сравнить строки - разные кодовые страницы - PullRequest
0 голосов
/ 24 апреля 2009

У меня есть две строки для чтения из текстовых файлов для сравнения, и когда я пытаюсь сравнить эти файлы с 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 ]

1 голос
/ 24 апреля 2009
1 голос
/ 24 апреля 2009

Похоже, вы хотите использовать перегрузку, которая принимает StringComparison. Я полагаю, учитывая текущее значение senario, вы хотите значение «Ordinal», но вы можете захотеть, чтобы один из других зависел от ваших действий.

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

1 голос
/ 24 апреля 2009

Ну, у вас нет строк .NET в WinMerge или pspad, поэтому что-то может пойти не так при декодировании. Вам необходимо объяснить ваш точный сценарий:

  • Являются ли данные в файле (отсюда и WinMerge / pspad)?
  • Как вы загружаете файл в .NET?
  • Как вы загружаете файл в WinMerge и т. Д.?

РЕДАКТИРОВАТЬ: Хорошо, основываясь на комментарии - что такое кодировка файла? Вы указываете это где-нибудь в WinMerge? .NET будет использовать UTF-8 (потому что вы не указали никакой другой кодировки).

1 голос
/ 24 апреля 2009

Вы можете преобразовать их обоих в byte[], используя методы из System.Text.Encoding а затем сравните byte[] массивы

...