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 回答