我正在尝试使用python中的服务器和java中的客户端进行非常简单的聊天程序。但是我不知道如何解码服务器从客户端收到的数据。客户端发送并编码为UTF-8。
只需打印即可:http://i.imgur.com/0usK6j7.jpg
首先从UTF-8解码它看起来像这样:http://i.imgur.com/Ctwivl4.jpg
我假设可以删除NUL字符或\ x00。包含整个消息的b''也一样。第二个字符似乎指定了消息的长度。但是我如何解码呢?我应该手动删除字符吗?我知道这是一个非常基本的问题,之前可能已被问到,但我甚至不知道要搜索什么。
答案 0 :(得分:3)
在java客户端中,我有一个DataOutputStream对象,我使用这个方法:out.writeUTF(input);
根据documentation of that method,它不会将UTF-8写入输出流。它说“首先,两个字节写入输出流”,这解释了字符串之前的16位长度。即使在那之后它也没有写UTF-8,它用Java自己的特殊编码编写,它称之为Modified UTF-8,它实际上是CESU-8的变体,而不是UTF-8。
首先,您需要明确您希望在客户端和服务器之间进行通信的格式:协议。它是普通的UTF-8吗?它是writeUTF
发出的奇怪的结构化编码吗?还有别的吗?然后编写客户端和服务器以遵循该规范。