[英]Character encoding between Java (Linux) and Windows system
我有一个简单的程序,它向运行我认为是用Delphi编写但肯定在Windows上运行的服务的远程服务器发出请求。
我被告知该服务将使用Windows的默认编码。
当我得到一个响应并使用println进行输出时,我在输出中得到了一些奇怪的符号,这使我认为这是一个字符编码问题。
我怎样才能告诉Java远程系统的输入是在Windows编码中?
我尝试了以下方法:
_receive = new BufferedReader(new InputStreamReader(_socket.getInputStream(),"ISO-8859-1"));
_System.out.println(_receive.readLine());
多余的字符在输出中显示为正方形,正方形中有4个数字。
除非您知道“默认编码”是什么,否则您将无法知道它是什么。 “默认编码”通常是系统全局代码页,在不同系统上可能不同。
您应该真正尝试使人们使用双方都同意的编码。 如今,这几乎应该总是UTF-16或UTF-8。
顺便说一句,如果您要在Windows框上发送一个字符,并且在Java框上收到多个“奇怪的符号”,则Windows框很有可能已经在发送UTF-8。
使用cp1252
代替ISO-8859-1
,因为Windows上是默认设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.