byte[] 转换成 String 之后 数据不全

// 调用socket获取数据
byte[] byteMessage = SocketAppClient.send_recv(message);
// 转换成 String
String JsonMessage = new String(byteMessage,"UTF-8").substring(8);

转换完之后得到的数据JsonMessage 数据不全,或者是结尾处出现这种乱码“XX讲�”

求大神赐教,!!!

byte 中含有字符串结束符,所以其后的内容丢失。

调试下,贴出byteMessage字节的截图,帮你看下。为了简单起见,不要太多字符。

socket获取数据时,是否获取了所有的byte数据。。。有一种情况是这样的,网络传输文本是一个 100byte的数组;但是你读出来的时候,第一次只读了49个字符;这个时候你把byte[] --> String;结尾当然是乱码了

1.检查byteMessage是否有长度小于传送数据的情况,这时候有可能导致只接收了部分数据。
2.检查byteMessage是否有长度大于传送数据的情况,这时候有可能导致转化的JsonMessage有乱码。
总之你接收的byte[]要和传送的大小保持一致。