用Java写的服务端,粗略代码如下:
ServerSocket server = new ServerSocket(5555);
Socket client = server.accept();// in为输入流
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream());// Flash发来的数据以\0作结束标记,下面截取第一段数据
int intData;
char EOF = (char) 0x00;
StringBuffer msg = new StringBuffer();
while(true) {
if((char)(intData = in.read()) != EOF) {
msg.append((char)intData);
} else{
break;
}
}
System.out.println("Recieved: " + msg);如果发来的是英文的话,完全没问题,但中文就乱码了。是什么原因呢?

解决方案 »

  1.   

    InputStream in=s.getInputStream();
    byte[] buf=new byte[100];
    int len=in.read(buf);
    System.out.println(new String(buf,0,len));
      

  2.   

    嗯,是字符编码问题,Flash的xmlsocket是用UTF-8的。我自己解决了,不过还是要谢谢大家in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
    out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"UTF-8"));