Java如何在套接字中读取unicode字符?

Java如何在套接字中读取unicode字符?,java,sockets,unicode,Java,Sockets,Unicode,服务器接收字节数组作为inputstream,我用DataInputStream包装了该流。前2个字节表示字节数组的长度,后2个字节表示标志,下一个字节由内容组成。我的问题是内容包含unicode字符,该字符有2个字节。我如何读取unicode字符?我的上一个代码是: DataInputStream dis = new DataInputStream(is); int length = dis.readUnsignedShort(); int flag = dis.rea

服务器接收字节数组作为inputstream,我用DataInputStream包装了该流。前2个字节表示字节数组的长度,后2个字节表示标志,下一个字节由内容组成。我的问题是内容包含unicode字符,该字符有2个字节。我如何读取unicode字符?我的上一个代码是:

    DataInputStream dis = new DataInputStream(is);
    int length = dis.readUnsignedShort();
    int flag = dis.readUnsignedShort();

    String content = "";
    int c;
    for (int i = 0; i < length - 4; i++) {
        c = dis.read();
        content += (char) c;
    }
DataInputStream dis=新的DataInputStream(is);
int length=dis.readUnsignedShort();
int flag=dis.readUnsignedShort();
字符串内容=”;
INTC;
对于(int i=0;i

它只能读取ascII.thxs以获取帮助

这取决于输入的编码方案。如果您不想做繁重的工作,可以使用ApacheIOUTILS并将字节转换为unicode字符串。 例子:
IOUtils.toString(bytes,“UTF-8”)

请参见BalusC的答案:如果这些代码点是big-endian UTF-16.thx那么多,请参见该方法。答案解决了我的问题。我使用:String s=新字符串(bytes,“UTF-8”);我认为这与您的解决方案类似~thx