我有一個奇怪的情況,我想不通。C#兩個字符串,在視覺上相同,但它們不是相等也不等於
我正在使用第三方轉換框架,期望縮寫形式的單位例如「微伏」這是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
我已經獲得通過調試第三方框架使用的價值和複製的縮寫我的價值知道他們用於MicroVolts。
任何想法爲什麼兩個字符串,即使外觀由完全相同的字符組成,不會被認爲是相等的?
我也比較的第一個字符,則微單元的表示,這兩個字符串其產生之間:
'μ'.CompareTo(targetUom[0])
775
*********** ****** UPDATE ********** 所以我發現這兩個微字符是不同的編碼。
但是,當我嘗試使用目標框架使用相同的編碼,Visual Studio中給了我這個消息:
有什麼改變file..should我的編碼的含義要做到這一點,還是應該與框架作者合作,使他們的框架能夠處理這兩種編碼?
很酷,歡呼。你從哪裏找到這些信息? – JTech
https://dotnetfiddle.net/vNYAzb。兩個不同的Unicode字符 – Hakunamatata
http://stackoverflow.com/questions/20674577/how-to-compare-unicode-characters-that-look-alike同樣的問題,你在做什麼 – Hakunamatata