私は理解できない奇妙な状況があります。C#2つの文字列、視覚的に同じ、まだそれらは等しくない等価
私は第三者の変換フレームワークを使用しています。 "μ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のために使用することを知ってください。
2つの文字列は、同じ文字で構成されているように見えますが、等しいとはみなされません。
私も生み出す2つの文字列の間の最初の文字、マイクロ単位の表現、比較しました:****** UPDATE ***********
'μ'.CompareTo(targetUom[0])
775
を********** 私は2つのマイクロ文字が異なるエンコーディングであることを発見しました。
しかし、私は、ターゲットフレームワークが使用するのと同じエンコーディングを使用しようとすると、Visual Studioは私にこのメッセージを表示します。
file..should Iのエンコーディングを変更することの意味は何またはフレームワークの作成者と協力して、両方のエンコーディングを処理するフレームワークを有効にする必要がありますか?
クール、歓声。あなたはその情報をどこで見つけましたか? – JTech
https://dotnetfiddle.net/vNYAzb。 2つの異なるユニコードのキャラクター – Hakunamatata
http://stackoverflow.com/questions/20674577/how-to-compare-unicode-characters-that-look-alikeあなたが持っているものと同じ問題 – Hakunamatata