byte[] data = (byte[])opBinding.execute();
PrintWriter out = new PrintWriter(outputStream);
out.println(data);
out.flush();
out.close();
但是我得到了@84654而不是文本。我怎样才能将byte[]添加到PrintWriter中?我需要byte[]而不是字符串,因为我在处理čćžšđ时遇到了编码问题。
byte[] data = (byte[])opBinding.execute();
PrintWriter out = new PrintWriter(outputStream);
out.println(data);
out.flush();
out.close();
但是我得到了@84654而不是文本。我怎样才能将byte[]添加到PrintWriter中?我需要byte[]而不是字符串,因为我在处理čćžšđ时遇到了编码问题。
您可以直接使用outputstream编写字节。
outputStream.write(byte[] b);
PrintWriter
是用于处理文本数据而非二进制数据。byte[]
转换为一个String
,然后将该字符串输出 - 假设你写入的PrintWriter
使用了支持你所需字符的编码。byte[]
中所采用的编码方式,才能成功地进行文本转换。println
语句之前(隐式地)调用了data.toString()
。试一下这个
byte[] data = (byte[])opBinding.execute();
PrintWriter out = new PrintWriter(outputStream);
out.println(new String(data));
out.flush();
out.close();
这对我有用...当我使用时
PrintWriter out=new PrintWriter(System.out);
同时,它使用toString()
方法将字节数据转换为字符串。这可能是您编码问题的原因。
byte[]
数据使用的编码是什么吗?如果知道,你可以使用String foo = new String(data, "UTF-8")
或类似的方法。 - clstrfsckflush()
,仅需使用close()
即可。 - Eng.Fouad