socket通信接收的数据后转String类型后为什么前面会带半个双引号?? 在控制塔打印是没有那半个双引号的,equqls判断为false
断点观察字符串只有半个引号通常是因为字符串太长了,后面的省略掉了。你那个数据一共有1000多个字节明显不对,如果utf-8编码,字符串“bye” 应该只有3个字节。你那个"bye".equals(receiveData) 结果为false 就是应为字符串不一样长。控制台打印出来看到是"bye",那是因为你那个字节数据后面都是0,解析出来是空白字符。
要重现你的问题很容易,你可以试试这样:
byte[] rawBytes = "bye".getBytes("UTF-8");
byte[] receiveData = Arrays.copyOf(rawBytes, rawBytes.length + 1021);
String str = new String(receiveData, 0, receiveData.length);
System.err.println(str.length());
System.err.println(str);
System.err.println("bye".equals(str));