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