У меня странная ситуация, я не могу понять.C# Две строки, визуально одинаковые, но они не равны и не эквивалентны
Я использую стороннюю структуру преобразования, которая ожидает единицы в сокращенной форме, например. «μV», который является MicroVolts
Но когда я иду разбирать строку «μV» как MicroVolts, она терпит неудачу.
Я откидывал его до того, что строка аббревиатуры, которую я передаю, не равна строке, которую сторонняя структура использует для Microvolts, хотя они выглядят одинаково.
Вот выход открывшегося окна, чтобы помочь пролить свет на контексте:
targetUom
"µV"
targetUom.GetHashCode()
-837503221
"μV".GetHashCode()
-837502956
targetUom.Equals("µV") // This is using the value of targetUom
true
targetUom.Equals("μV") // This is using the value from the 3rd party framework
false
я получил значение, используемое в рамках третьей стороны путем отладкой и копирование значения аббревиатуры I знают, что они используют для MicroVolts.
Любая идея, почему две строки, даже если внешний вид состоит из одинаковых символов, не будут считаться равными?
Я также сравнил первый символ, микро единичного представления, между двумя строками, которая дает:
'μ'.CompareTo(targetUom[0])
775
*********** UPDATE ****** ********** Итак, я обнаружил, что два микросимвола отличаются друг от друга.
Но когда я пытаться использовать ту же кодировку, которая использует целевой каркас, Visual Studio дает мне это сообщение:
Какова прикосновенность изменения кодировки file..should I делать это или я должен сотрудничать с автором структуры, чтобы позволить их структуре обрабатывать оба кодирования?
Прохладный, приветствия. Откуда вы нашли эту информацию? – JTech
https://dotnetfiddle.net/vNYAzb. Два разных символа unicode – Hakunamatata
http://stackoverflow.com/questions/20674577/how-to-compare-unicode-characters-that-look-alike. Такая же проблема, как и то, что у вас есть – Hakunamatata