我读了其他关于这个问题的SO问题,没有任何解决我的问题,所以我觉得这个帖子不是重复的。发送unicode字符串到服务器套接字
我想发送一个Unicode字符串从android客户端套接字到服务器套接字但是我从服务器(我在Windows上使用c#服务器)接收所有Unicode字符作为问号。我使用WireShark来监视网络,并将所有Unicode字符显示为点。这是我的发送代码:
String msg = "تست سوکت";
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),
true);
out.println(msg);
out.flush();
一些StackOverflow上的问题说,加入charSetEncoder
到OutputStreamWriter
constractor可以解决这一点,但,这不是为我工作,结果是一样的:
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream(),
Charset.forName("UTF-8").newEncoder())),
true);
// Or
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream(),
"UTF-8")),
true);
我尝试之后将字节数组作为字符串发送,但不向服务器发送任何内容:
byte[] byteArray = msg.getBytes(Charset.forName("UTF-8"));
out.println(byteArray.toString() + "\n");
你确定问题出在java客户端代码中,而不是在服务器C#代码中? – Gavriel
'之后,我尝试发送字符数组作为字符串,'。这不是一个好主意。你应该发送字节数组本身。所以你不能使用println()。使用write()。试用msg.getBytes。你当然应该显示接收的C#代码。 – greenapps
@Gavriel问题出在服务器代码上,但wireShark的结果让我相信这是客户端问题。谢谢你的帮助。 –