我有一个非常有趣的话题 - 至少对我而言.给定一个带有字节的ByteArrayOutputStream,例如UTF-8,我需要一个能够将这些字节"转换"成另一个字节的函数 - 新的 - ByteArrayOutputStream,例如UTF-16,或ASCII或你命名它.我天真的方法是使用一个InputStreamReader并提供所需的编码,但这不起作用,因为它将读入char [],我只能将byte []写入新的BAOS.
public byte[] convertStream(Charset encoding) {
ByteArrayInputStream original = new ByteArrayInputStream(raw.toByteArray());
InputStreamReader contentReader = new InputStreamReader(original, encoding);
ByteArrayOutputStream converted = new ByteArrayOutputStream();
int readCount;
char[] buffer = new char[4096];
while ((readCount = contentReader.read(buffer, 0, buffer.length)) != -1)
converted.write(buffer, 0, readCount);
return converted.toByteArray();
}
Run Code Online (Sandbox Code Playgroud)
现在,这显然不起作用,我正在寻找一种方法来使这种情况成为可能,而不是从字节[]中构建一个字符串.
@Edit:因为看起来很难读出明显的东西.1)raw:ByteArrayOutputStream,包含从客户端发送给我们的BINARY对象的字节.字节通常以UTF-8作为HTTP消息的一部分.2)这里的目标是将此BINARY数据发送到一个不灵活的内部系统 - 这是一个内部系统 - 它接受UTF-16中的这些附件.我不知道为什么不问,它是这样的.
因此,为了证明我的问题:有没有办法将字节数组从Charset A转换为Charset B或编码你的选择.再次建立一个字符串不是我想要的.
谢谢你,并希望清除可疑的部分:).