我正在尝试使用 python 制作的服务器和 java 制作的客户端制作一个非常简单的聊天程序。但是我不知道如何解码服务器从客户端接收到的数据。客户端发送并编码为 UTF-8。
只是打印它看起来像这样:http://i.imgur.com/0usK6j7.jpg
首先从 UTF-8 解码它看起来像这样:http://i.imgur.com/Ctwivl4.jpg
我假设可以删除 NUL 字符或\x00。包装整个消息的 b'' 也是如此。第二个字符似乎指定了消息的长度。但是我该如何解码呢?我应该手动删除字符吗?我知道这是一个非常基本的问题,之前可能有人问过,但我什至不知道要搜索什么。
最佳答案
In the java client I have a DataOutputStream object which i use with this method: out.writeUTF(input);
根据documentation of that method ,它不会将 UTF-8 写入输出流。它说“首先,两个字节被写入输出流”,这解释了字符串之前的 16 位长度。甚至在那之后它不写 UTF-8,它写在 Java 自己的特殊编码中,它称之为 Modified UTF-8这实际上是 CESU-8 的变体,而不是 UTF-8。
因此,首先,您需要明确您希望在客户端和服务器之间进行通信的确切格式:协议(protocol)。它是普通的UTF-8吗? writeUTF
发出的是奇怪的结构化编码吗?是别的东西吗?然后编写您的客户端和服务器以遵循该规范。
关于java - 如何解码来自 TCP 套接字的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16750350/