我有一个简单的程序,可以向运行服务的远程服务器发出请求,我相信这个服务是用delphi编写的,但肯定是在windows上运行的。
我被告知该服务将使用windows的默认编码。
当我得到一个响应并使用println输出它时,我在输出中得到了一些奇怪的符号,这使我认为这是一个字符编码问题。
如何告诉java远程系统的输入是windows编码的?
我尝试了以下方法:
_receive = new BufferedReader(new InputStreamReader(_socket.getInputStream(),"ISO-8859-1"));
_System.out.println(_receive.readLine());
额外的字符在输出中显示为正方形,正方形中有4个数字。
2条答案
按热度按时间xmd2e60i1#
使用
cp1252
而不是ISO-8859-1
,因为它是windows上的默认值。dfuffjeb2#
除非你知道“默认编码”是什么,否则你不知道它是什么。“默认编码”通常是系统全局代码页,在不同的系统上可能不同。
你应该努力让人们使用双方都同意的编码方式;现在,这几乎总是utf-16或utf-8。
顺便说一句,如果您在windows box上发送一个字符,并且在java box上接收到多个“奇怪的符号”,那么windows box很有可能已经在发送utf-8了。