3

我正在尝试使用python制作的服务器和java中的客户端制作一个非常简单的聊天程序。但是我不知道如何解码服务器从客户端接收的数据。客户端发送并编码为 UTF-8。

只是打印它看起来像这样:http: //i.imgur.com/0usK6j7.jpg

首先从 UTF-8 解码看起来像这样:http: //i.imgur.com/Ctwivl4.jpg

我假设可以删除 NUL 字符或 \x00。包装整个消息的 b'' 也是如此。第二个字符似乎指定了消息的长度。但是我该如何解码呢?我应该手动删除字符吗?我知道这是一个非常基本的问题,并且可能以前被问过,但我什至不知道要搜索什么。

4

1 回答 1

3

在 java 客户端中,我有一个 DataOutputStream 对象,我使用这个方法:out.writeUTF(input);

根据该方法的文档,它不会将 UTF-8 写入输出流。它说“首先,将两个字节写入输出流”,这解释了字符串之前的 16 位长度。甚至在那之后它不写 UTF-8,它用 Java 自己的特殊编码编写,它称为Modified UTF-8,它实际上是CESU-8的变体,而不是 UTF-8。

因此,首先,您需要明确您希望使用什么格式在客户端和服务器之间进行通信:协议。是纯 UTF-8 吗?是writeUTF发出奇怪的结构化编码吗?是别的吗?然后编写您的客户端和服务器以遵循该规范。

于 2013-05-25T14:31:29.377 回答