0

私はAndroidとPCの両方で、ソケットを使用して相互に通信するチャットアプリに取り組んでいます。問題は、アプリが日本語で動作する必要があるのに、Android側で文字コードの問題が発生することです。

サーバーはPC上で動作し、すべてのクライアントがPC上にある場合はすべて正常に動作するため、Android側ですべてのエンコード/デコードを実行しようとしました。両方のクライアントで、System.getProperty( "file.encoding");を試しました。

PCはShift_JISを使用し、AndroidはUTF-8を使用していることがわかりました。だから私はしました

//on the Android output
OutputStream output = socket.getOutputStream();
PrintWriter writer = new PrintWriter(output);
writer.println(new String(msg.getBytes(), "Shift_JIS"));
writer.flush();

//on the Android input
InputStream input = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String line = reader.readLine();
String lineDec = new String(line.getBytes("Shift_JIS"), "UTF-8");

しかし、それでも文字コードの問題が発生しました。

「Shift_JIS」と「UTF-8」を入れ替えてみましたが、うまくいきませんでした…何かアドバイスがあれば嬉しいです。ありがとうございました!

4

1 に答える 1

1

なんで呼んでるのString.getBytes()OutputStreamWriter/を作成InputStreamReaderし、コンストラクターで文字セットを指定できます。これにより、適切な文字セットを使用した文字列からバイトストリームへの変換が処理されます。両側でUTF-8を明示的に指定するだけです。何かのようなもの:

OutputStream output = socket.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(output, "UTF-8");
writer.println("message");
于 2012-07-19T03:53:15.467 に答える