gpt4 book ai didi

java - 将 byte[] 转换为 Java 字符串。添加一个?在每次转换中

转载 作者:行者123 更新时间:2023-12-02 06:00:45 24 4
gpt4 key购买 nike

我正在编写 java 代码,我想从一个文件中读取一次 64kb 并将这些 64kb 转换为字符串。我能够读取并将它们保存在 vector 中,但是当我尝试转换为字符串时,字符总是多于应有的数量。例如:

String s = new String(byte[], "UTF8") 转换 %Çìm 它给了我 %????用 String s = new String(byte[])new String(byte[],"Cp1252") 等转换 %Çìm 会给我 %Çì?如果没有的话,这将是完美的? 。谁能帮我?尝试了各种方法将 byte[] 转换为字符串:(

最佳答案

不要将String 用于二进制数据。它无法工作。

Java 中的字符串在运行时是 char 的序列,并非所有字节序列都可以转换为 char

如果您需要二进制数据的String表示,请使用可以实现此目的的专用格式(例如base64)。

参见here完整的故事;最后有一个示例说明了为什么二进制的 String 无法工作。

下面是一个示例代码,如果您的 byte 数组无法转换为字符串,它会向您大喊大叫(即抛出异常):

final CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder()
.onMalformedInput(CodingErrorAction.REPORT);

try {
decoder.decode(ByteBuffer.wrap(yourByteArray));
} catch (CharacterCodingException e) {
System.err.println("No can't do...");
e.printStackTrace(System.err);
}

默认情况下,不可映射的字节序列会被替换并且不会引发错误。

当然,不能保证正确的字节序列恰好需要 64k。

关于java - 将 byte[] 转换为 Java 字符串。添加一个?在每次转换中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22697242/

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