【问题标题】:How to decode unicode byte stream into characters如何将 unicode 字节流解码为字符
【发布时间】:2017-05-19 05:07:51
【问题描述】:

我正在编写一个服务器程序,我正在从网络套接字读取 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 破坏。

【问题讨论】:

标签: java sockets unicode utf-8


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    相关资源
    最近更新 更多