gpt4 book ai didi

java - 字节与字符串之间的奇怪转换

转载 作者:行者123 更新时间:2023-12-02 01:56:39 27 4
gpt4 key购买 nike

我有一个迷你服务器

byte[] content = fileManager.get(request.getUri());

这里我获取了服务器上文件的内容
接下来我进行压缩和分块

content = process(content, response);

private byte[] process(byte[] content, Response response) {
ProcessorList processors = new ProcessorList();
processors.add(new CompressDelegator(new GZIPCompressor()));
processors.add(new ChunkDelegator(new Chunker(30)));
content = processors.process(content, response);
return content;
}

之后,奇妙的事情发生了现在在文件的压缩和分块内容中

System.out.println(Arrays.toString(content));
System.out.println(Arrays.toString(new String(content).getBytes()));

其中两个将打印不同的答案。为什么?

最佳答案

new String(content).getBytes()

正在从 byte[]String 再到 byte[] 进行往返。

您正在使用 JVM 的默认字符集将 byte[] 转换为 String。如果 byte[] 包含根据该字符集无效的字节序列,则这些字节无法准确转换为 char,因此它们将被转换为... String 中不包含您期望的内容;因此,当您转换回 byte[] 时,它们将与输入不同。

不要这样做:String 在逻辑上不是 byte[],它是一个 char[].如果您想在 String 中传输 byte[],请先执行诸如 base64 编码之类的操作。

关于java - 字节与字符串之间的奇怪转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52193836/

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