Java:不同的字节[]在utf8中具有相同的字符串
有两个不同的字节数组。当我从字节[]获取字符串时。当我使用utf8时,它们的值相同。使用ISO-8859-1时正好相反Java:不同的字节[]在utf8中具有相同的字符串,java,string,utf-8,byte,Java,String,Utf 8,Byte,有两个不同的字节数组。当我从字节[]获取字符串时。当我使用utf8时,它们的值相同。使用ISO-8859-1时正好相反 byte[] valueFir = new byte[]{0, 1, -79}; byte[] valueSec = new byte[]{0, 1, -80}; Charset CHARSET = Charset.forName("ISO-8859-1"); Charset UTF8SET = Charset.forName("UTF-8")
byte[] valueFir = new byte[]{0, 1, -79};
byte[] valueSec = new byte[]{0, 1, -80};
Charset CHARSET = Charset.forName("ISO-8859-1");
Charset UTF8SET = Charset.forName("UTF-8");
Charset[] list = new Charset[]{CHARSET, UTF8SET};
for(int i=0; i<list.length; i++){
String fir = new String(valueFir,list[i]);
String sec = new String(valueSec,list[i]);
Assert.assertNotEquals(fir,sec);
}
byte[]valueFir=新字节[]{0,1,-79};
byte[]valueSec=新字节[]{0,1,-80};
Charset Charset=Charset.forName(“ISO-8859-1”);
Charset UTF8SET=Charset.forName(“UTF-8”);
字符集[]列表=新字符集[]{Charset,UTF8SET};
对于(inti=0;i如果你看
此方法始终使用此字符集的默认替换字符串替换格式错误的输入和不可映射的字符序列
现在在UTF8中,字节-79和-80不映射到单个字符。因此,在UTF8中,两个字节数组都没有意义。而且由于它们不可映射,您只需获得默认的字符串两次。然后,您的资产notequals
将默认的字符串与自身进行比较
然而,您的字节数组在ISO-8859-1中非常有意义,并被转换为两个不同的字符串值。如果您查看
此方法始终使用此字符集的默认替换字符串替换格式错误的输入和不可映射的字符序列
现在在UTF8中,字节-79和-80不映射到单个字符。因此,在UTF8中,两个字节数组都没有意义。而且由于它们不可映射,您只需获得默认的字符串两次。然后,您的资产notequals
将默认的字符串与自身进行比较
但是,您的字节数组在ISO-8859-1中非常有意义,并被转换为两个不同的String
值