Eclipse用流接取数组 输出的是□方块 怎么办
Eclipse用流接取数组 输出的是□方块 怎么办简介:OutputStream os = socket.getOutputStream();String str = "您好, 我想咨询。";os.write(str.getBytes()); -----
String str = "您好, 我想咨询。";
os.write(str.getBytes());
--------------------------------------------------
InputStream is = socket.getInputStream();
byte[] b = new byte[1024];
is.read(b);
System.out.println(new String(b));
--------------------------------------------
这是我 的两个流 结果输出来就是 您好我想咨询□□□□□□□□□□□□□□□□□□□□□□后面一堆方块
解决方法:你要获取要读取的字节数组的长度那我如何获取啊……求指教你去看看inputstream的方法,可以获取长度byte[] b 的长度超过了“您好,我想咨询。”的长度,超过长度部分都为0,生成字符串是无法识别的字符,所以变成方框。
需要根据 InputStream 内容的长度构造字符数组。或者先使用 ByteArrayOutputStream 接收,再转成字符串。
InputStream is = socket.getInputStream(); ByteArrayOutputStream receiver = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = -1; while ((len = is.read(buffer)) != -1) { receiver.write(buffer, 0, len); } System.out.println(new String(receiver.toByteArray()));
别用西文字体,用编译工具默认的字体就不会了
本文用户投稿或网站收集转载,如有侵权请联系本站。