UDP实现聊天出现没见过的符号

我在使用UDP实现聊天的时候发送消息的后边总有一长串长方形里面一个叉的符号(这里打不出来,可以百度一下),想问一下是idea设置有问题还是代码写错了,求各位解答一下,万分感谢!

例如:
我使用发送端给接收端发送“a”
接收端收到的消息是“a(后边一串长方形里面一个叉的符号)”

还有我想在输入bye的时候断开连接,发送端在发送完bye后就会断开,但是接收端还在接收。

代码如下

//接收端
public static void main(String[] args) throws Exception{
        DatagramSocket socket = new DatagramSocket(6666);

        while (true){
            //准备接收包裹
            byte[] container = new byte[1024];
            DatagramPacket packet = new DatagramPacket(container,0,container.length);
            socket.receive(packet);//阻塞式接收包裹
            //断开连接 bye
            byte[] data = packet.getData();
            String receiveData = new String(data, 0, data.length);
            System.out.println(receiveData);
            if (receiveData.equals("bye")){
                break;
            }

        }
        socket.close();

    }
//发送端
public static void main(String[] args) throws Exception{
        DatagramSocket socket = new DatagramSocket(8888);

        //准备数据:控制台读取 System.in
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        while (true){
            String data = reader.readLine();
            byte[] datas = data.getBytes();

            DatagramPacket packet = new DatagramPacket(datas,0,datas.length,new InetSocketAddress("localhost",6666));
            socket.send(packet);
            if (data.equals("bye")){
                break;
            }
        }


        socket.close();

    }

data 是个byte数组
你要转string,就要看之前它是如何从string转成byte的,然后对应的转回来,不能瞎转呀
byte[] bytes = "hello world".getBytes();
//Base64 Encoded
String encoded = Base64.getEncoder().encodeToString(bytes);
//Base64 Decoded
byte[] decoded = Base64.getDecoder().decode(encoded);