2017-05-08 93 views
-1

如何獲取字符集獨立的字符串操作:equals,hashcode和compare?字符集獨立字符串等於,哈希碼和比較

例如爲:

assertEquals("1ª", new String(new byte[] { (byte) '1', (byte) 166 }, "ISO-8859-15")); 

這是故障的例子。

UPDATE

String方法已經是字符集無關。我的錯誤是,166是標準擴展ASCII表中的charª,但不是ISO-8859-15字符集。在這一個ª相當於170

+0

轉換到一些字節數組使用一些常見的「高級」字符集? – 2017-05-08 12:11:33

+0

「擴展ASCII」不是一件真實的事情。 –

回答

2

我猜測,在"1ª"的Java字符串字面量ª字符是一個已經錯位了一些人物,由於沿線某處一個不正確的字符解碼。我猜這是假設是什麼166代表的相同字符。

如果您希望避免像在ISO-Java源代碼中嵌入字符串文字時那樣的問題,那麼解決方案是使用Unicode轉義。例如:

assertEquals("1\u0160", new String(new byte[] { (byte) '1', (byte) 166 }, 
           ISO-8859-15")); 

Unicode的碼點U + 0160是š ...其對應於ISO-8859-15的代碼166(十進制)。該\u....語法在Java源代碼是獨立於源在編碼字符集的。

(請原諒我,如果我已經得到了實際的字符不正確。一般的做法是合理的,但。)