簡體   English   中英

Java(Linux)和Windows系統之間的字符編碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM