我有一個Map類型的變量。將十進制格式(html編碼)的Unicode字符轉換爲常規字符串
if (sourceMap.containsKey(currentRow)) {
//Remove the row from Map
} else {
//Mismatch
}
其中sourceMap
是其中包含許多字符串如
Period Name
Person Last Name
Person First Name
Order Code
Ship_to_Customer_Name
Sub_Profit_Center
Commission Amount
Credit Amount
Rate Amount
Apr-09
Morgan
Martin
1022334852
Carl Zeiss de M&# 195;&# 189;xico, S.A. de C.V.(no space after the # in the string)
currentRow
和一個HashMap變量包含以下字符串:
Carl Zeiss de Mýxico, S.A. de C.V.
這是一樣的最後row.My要求它應該匹配。我必須做的匹配那些轉換
這些字符串來自不同的文件 第一個被下載爲CSV所以沒有Unicode字符..第二個(currentRow)是以unicoded txt格式下載並使用dos2unix轉換爲CSV。
即「當前行」看起來你已經從二元到文本轉換時,它應用了錯誤的編碼。請提供更多關於價值來源的信息 - 我懷疑您需要儘早解決問題。 –
編碼錯誤' 195; 189;'與'Ã''不同' – angel
'卡爾蔡司德'M 195; 189; xico,SA de CV'(即使刪除了實體中的無效空格)與字符串「Carl Zeiss deMáxico,SA de CV'以兩種不同的方式:1.第一種使用(或試圖使用)HTML字符實體(對Java沒什麼特別的),2.第一種在大寫M之前有一個引號'第二個沒有。作爲參考,[Unicode轉義序列](http://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.3)in Java看起來像這樣:'\ uXXXX'(其中'X'是一個十六進制數字) –