如何将unicode字节流解码为字符

时间:2017-05-19 05:07:52

标签: java sockets unicode utf-8

我正在编写一个服务器程序,我正在从网络套接字读取UTF-8编码的字节流并连续解释这些字符。

对于需要多个字节来表示的字符,有时我只是接收套接字上字符的第一个字节,程序会将此字节解释为无效字符。

例如,客户端在代码下运行: -

  String s = "Cañ";

  byte[] b = s.getBytes("UTF-8");

  //sending first three bytes
  send(b, 0, 3));   //send(byte[], offset, length)

  //sending last byte
  send(b, 3, 1);

当服务器收到前三个字节时,它会将它们解码为Ca?。

如何检测服务器上的字符边界?

给出的代码是为了产生问题。我相信这个角色有时会被TCP打破。

1 个答案:

答案 0 :(得分:0)

TCP协议可靠,如果网络卡塞,您有时可能会丢失一些数据包。你可以自己设计一个协议。通过设置协议数据框的第一个和最后一个标签,你可以检查你是否轻松收到了完整的数据。