Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:不同的字节[]在utf8中具有相同的字符串_Java_String_Utf 8_Byte - Fatal编程技术网

Java:不同的字节[]在utf8中具有相同的字符串

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")

有两个不同的字节数组。当我从字节[]获取字符串时。当我使用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");
    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