Java 如何将unicode字节流解码为字符
我正在编写一个服务器程序,从网络套接字读取UTF-8编码的字节流,并不断解释这些字符 对于需要一个以上字节来表示的字符,有时我只接收套接字上字符的第一个字节,程序将该字节解释为无效字符 例如,客户端运行以下代码:-Java 如何将unicode字节流解码为字符,java,sockets,unicode,utf-8,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) //
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有时会破坏字符。TCP协议是可靠的,如果网络堵塞,有时可能会丢失一些数据包。您可以自己设计协议。通过设置协议数据帧的第一个和最后一个标记,您可以轻松检查是否已收到完整数据。服务器如何“接收”字节的可能重复?读取字符数据时,不应尝试读取原始
InputStream
,而应将其封装在InputStreamReader
中,该读取器了解字符和UTF-8等信息