0

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

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

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

如何告诉 Java 来自远程系统的输入是 Windows 编码?

我尝试了以下方法:

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

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

4

2 回答 2

2

除非您知道“默认编码”是什么,否则您无法分辨它是什么。“默认编码”一般是系统全局代码页,在不同系统上可能不同。

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

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

于 2012-08-24T11:52:38.303 回答
1

使用cp1252代替ISO-8859-1,因为它是 Windows 的默认设置。

于 2012-08-24T11:46:07.750 回答