0

Delphiで書かれていると思われるサービスを実行しているリモートサーバーにリクエストを送信する簡単なプログラムがありますが、間違いなくWindowsで実行されています。

このサービスは、Windows のデフォルトのエンコーディングを使用すると言われています。

応答を取得して println を使用して出力すると、出力に奇妙な記号が表示され、文字エンコーディングの問題であると思われます。

リモートシステムからの入力がWindowsエンコーディングであることをJavaに伝えるにはどうすればよいですか?

私は次のことを試しました:

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

余分な文字は、正方形の中に 4 つの数字がある正方形として出力に表示されます。

4

2 に答える 2

2

「デフォルトのエンコーディング」が何であるかを知らない限り、それが何であるかを知ることはできません. 「デフォルトのエンコーディング」は通常、システム全体のコードページであり、システムによって異なる場合があります。

双方が同意するエンコーディングを人々に使用させるように実際に努めるべきです。最近では、ほとんどの場合、これは UTF-16 または UTF-8 である必要があります。

ところで、Windows ボックスで 1 文字を送信し、Java ボックスで複数の「奇妙な記号」を受信した場合は、Windows ボックスが既に UTF-8 を送信している可能性があります。

于 2012-08-24T11:52:38.303 に答える
1

cp1252の代わりに使用ISO-8859-1します。これは Windows のデフォルトです。

于 2012-08-24T11:46:07.750 に答える