С# сравнение строк - другая кодовая страница

У меня есть две строки, считанные из текстовых файлов для сравнения, и когда я пытаюсь сравнить эти файлы с 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: é”’(§è!çà)-

В любом случае я могу правильно сравнить эти две строки и сопоставить эти символы «&»?


person Carra    schedule 24.04.2009    source источник


Ответы (4)


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

person Eoin Campbell    schedule 24.04.2009

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

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

person Mark Broadhurst    schedule 24.04.2009

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

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

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

person Jon Skeet    schedule 24.04.2009
comment
1) Данные находятся в файле *.txt 2) Файлы читаются со строкой string1 = File.ReadAllText(@c:\file1.txt) 3) Я просто открываю файл1 и использую различия текста с файлом2.txt вариант. - person Carra; 24.04.2009

После прочтения «Абсолютный минимум, который каждый разработчик программного обеспечения обязательно должен знать о Unicode и наборах символов (без оправданий!)" вы должны быть хорошо подготовлены, чтобы решить свою проблему самостоятельно.

person David Schmitt    schedule 24.04.2009