私は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」を入れ替えてみましたが、うまくいきませんでした…何かアドバイスがあれば嬉しいです。ありがとうございました!