有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java(Linux)和Windows系统之间的socket字符编码

我有一个简单的程序,可以向运行服务的远程服务器发出请求,我相信这是用Delphi编写的,但肯定是在Windows上运行的

我被告知该服务将使用Windows的默认编码

当我得到一个响应并使用println输出它时,我在输出中得到了一些奇怪的符号,这使我认为这是一个字符编码问题

我怎样才能告诉Java来自远程系统的输入是windows编码

我尝试了以下方法:

_receive = new BufferedReader(new InputStreamReader(_socket.getInputStream(),"ISO-8859-1"));
_System.out.println(_receive.readLine());

额外字符在输出中显示为正方形,正方形中有4个数字


共 (2) 个答案

  1. # 1 楼答案

    使用cp1252而不是ISO-8859-1,因为这是windows上的默认设置

  2. # 2 楼答案

    除非你知道“默认编码”是什么,否则你就不知道它是什么。“默认编码”通常是系统全局代码页,在不同的系统上可能不同

    你应该真正尝试让人们使用双方都同意的编码;如今,这几乎总是UTF-16或UTF-8

    顺便说一句,如果您在Windows框上发送一个字符,并且在Java框上收到多个“奇怪的符号”,那么Windows框很有可能已经发送了UTF-8