gpt4 book ai didi

java - String (bytes[] Charset) 在 Java7 和 Java 8 中返回不同的结果

转载 作者:搜寻专家 更新时间:2023-11-01 03:18:22 25 4
gpt4 key购买 nike

import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;

public class Java87String {

public static void main(String[] args) throws UnsupportedEncodingException {
// TODO Auto-generated method stub

//byte[] b = {-101, 53, -51, -26, 24, 60, 20, -31, -6, 45, 50, 103, -66, 28, 114, -39, 92, 23, -47, 32, -5, -122, -28, 79, 22, -76, 116, -122, -54, -122};
//byte[] b = {-76, -55, 85, -50, 80, -23, 27, 62, -94, -74, 47, -123, -119, 94, 90, 61, -63, 73, 56, -48, -54, -4, 11, 79};

byte[] b = { -5, -122, -28};

System.out.println("Input Array :" + Arrays.toString(b));
System.out.println("Array Length : " + b.length);
String target = new String(b,StandardCharsets.UTF_8);
System.out.println(Arrays.toString(target.getBytes("UTF-8")));
System.out.println("Final Key :" + target);

}
}

以上代码在 Java 7 中返回以下输出

Input Array :[-5, -122, -28]
Array Length : 3
[-17, -65, -67]
Final Key :�

相同的代码在 Java 8 中返回以下输出

Input Array :[-5, -122, -28]
Array Length : 3
[-17, -65, -67, -17, -65, -67, -17, -65, -67]
Final Key :���

听起来 Java8 用默认序列 [-17, -65, -67] 替换是正确的。

为什么 JDK 1.7 中的输出和 Any Known bug 存在差异,修复了这个问题?

最佳答案

根据 String JavaDoc :

The behavior of this constructor when the given bytes are not valid in the given charset is unspecified. The CharsetDecoder class should be used when more control over the decoding process is required.

关于java - String (bytes[] Charset) 在 Java7 和 Java 8 中返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39766217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com