对于使用java String中的前2个字节的内容

时间:2014-04-27 17:13:31

标签: java string

我从java服务器向C客户端发送一个字符串。在客户端中,String的开头总是有2个额外的字节。我猜java用它们来表示字符串的大小?

我发送带有此代码的字符串 DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); dos.writeUTF(randomString);

3 个答案:

答案 0 :(得分:3)

如果您通过调用writeUTF将字符串发送到服务器,则有线格式确实包含在前两个字节中作为short发送的字符串的长度:

  

使用修改后的UTF-8编码以与机器无关的方式将字符串写入指定的DataOutput。 首先,两个字节被写入,就像writeShort方法一样,给出了要遵循的字节数。该值是实际写出的字节数,而不是字符串的长度。 (重点补充)

您可以在源代码here中查找正在进行的具体细节。

答案 1 :(得分:2)

查看源代码,java doc告诉我们:

  

使用修改后的UTF-8将字符串写入指定的DataOutput   以与机器无关的方式编码。

     

首先,将两个字节写入,就像使用writeShort方法一样   给出要遵循的字节数。该值是数字         实际写出的字节数,而不是字符串的长度。

Click for the source code on GrepCode.

答案 2 :(得分:1)

我认为这是UTF-8的Byte Order Mark