2017-05-08 90 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源代码是独立于源在编码字符集的。

(请原谅我,如果我已经得到了实际的字符不正确。一般的做法是合理的,但。)