套接字—java(linux)和windows系统之间的字符编码

velaa5lx  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(334)

我有一个简单的程序,可以向运行服务的远程服务器发出请求,我相信这个服务是用delphi编写的,但肯定是在windows上运行的。
我被告知该服务将使用windows的默认编码。
当我得到一个响应并使用println输出它时,我在输出中得到了一些奇怪的符号,这使我认为这是一个字符编码问题。
如何告诉java远程系统的输入是windows编码的?
我尝试了以下方法:

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

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

xmd2e60i

xmd2e60i1#

使用 cp1252 而不是 ISO-8859-1 ,因为它是windows上的默认值。

dfuffjeb

dfuffjeb2#

除非你知道“默认编码”是什么,否则你不知道它是什么。“默认编码”通常是系统全局代码页,在不同的系统上可能不同。
你应该努力让人们使用双方都同意的编码方式;现在,这几乎总是utf-16或utf-8。
顺便说一句,如果您在windows box上发送一个字符,并且在java box上接收到多个“奇怪的符号”,那么windows box很有可能已经在发送utf-8了。

相关问题