java - 客户端通过套接字从服务器接收消息时出现一些问题

标签 java sockets encoding

在我的服务器代码中:

pw = new PrintWriter(stream);
br = new BufferedReader(new InputStreamReader(
    socket.getInputStream(), "UTF-8"));

在我的客户端代码中

BufferedReader br = new BufferedReader(new InputStreamReader(
                    clientSocket.getInputStream(), "UTF-8"));
OutputStreamWriter stream = new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8");
PrintWriter pw = new PrintWriter(stream);

然后 首先,服务器使用: pw.println("确定"); pw.flush();

客户端接收成功

之后,服务器使用:

pw.println("TRUE")
pw.flush();

这一次,客户端收到一个包含未知字符的字符串

\ufffd\ufffdTRUE

然后我继续向客户端发送消息,它会在每个句子之前收到一些\ufffd。

谁能帮我解决这个问题?

最佳答案

我可以想象服务器重新发送字节顺序标记(0xFFFE 0xFFFF),这些标记在客户端被替换字符(0xFFFD)替换。
在服务器端每次发送之前,您是否重新创建打印编写器?

关于java - 客户端通过套接字从服务器接收消息时出现一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357556/

相关文章:

java - 将数据插入 JList 而不删除另一个

c# - 有没有更好的方法通过套接字发送 int 列表?

iphone - 来自编码未知的文本文件的 NSString

sql - XML 解析错误 非法限定名称字符

java - SetVisible(false) 与占用的空间

java - 使用 `sessionFactory` 和 `transactionManager` 解决 Spring 中的循环依赖问题

java - 我如何类似于在多个网站上看到的典型 "confirmation of account"过程?

linux - 发送十二个数据包后 PF_UNIX 套接字阻塞

c++ - 如何让QTcpsocket在关闭DialogWindow后保持连接?

c# - 编码电子邮件以传递给 Web.API