在写Java代码的时候我们经常会遇到编码问题:在写socket通信的时候没有添加通信时候的编码格式。
import java.io.*;
import java.net.*;
public class Client {
PrintStream ps;
BufferedReader br;
public Socket clientSocket;
public Client() {
try {
clientSocket = new Socket("127.0.0.1", 9999);
OutputStream os = clientSocket.getOutputStream();
ps = new PrintStream(os);
InputStream is = clientSocket.getInputStream();
//这一行要极其的注意了,我原本没有写读入数据编码的格式,(utf-8)原本是这样InputStreamReader isr = new InputStreamReader(is);"这样是不行的"
//这一行要极其的注意了,我原本没有写读入数据编码的格式,(utf-8)原本是这样InputStreamReader isr = new InputStreamReader(is);"这样是不行的"
InputStreamReader isr = new InputStreamReader(is,"utf-8");
br = new BufferedReader(isr);
} catch (UnknownHostException e) {
System.out.println("88888888888888");
} catch (IOException e) {
System.out.println("11111111111111111111");
}
}
}
//就是因为没有规定服务器的输出数据编码格式和客户端的输入数据编码格式,而造成几个人一起一直在讨论这样的一个问题:
还有一个问题:从客户端发送信息到服务器的时候也不能进入if,同样是eclipse是编码问题,我们在eclipse改编码的时候,有些编码eclipse不支持,改过之后会乱码。我们的解决办法是,将这个文件内容剪切到记事本,清空原来的文件内容,然后改编码unicode类编码,重新把刚才记事本的内容复制到文件当中,保存,大功告成。。成功了,,,,,,,, 希望这个对自己有些帮助000000000.
//就是因为没有规定服务器的输出数据编码格式和客户端的输入数据编码格式,而造成几个人一起一直在讨论这样的一个问题:
String serverOutput = c.br.readLine();
String a[]=serverOutput.split(" ");
if(a[0].equals("FA")) {System.out.println("进入if语句");}我明明在服务器那里发送过来FA 01 01 00 00,但就是不能进入if语句,请大家思考一下这个问题。。(我们几个人整整弄了两个小时)为什么不能进入if语句。还有我们SYSTEM.OUT.PRINTLN(“”);打印一下也是a[0]为“FA”,但是为什么不是a[0]==“FA”呢。首先出现的问题就是,第一次从服务器发送过来的字符串第一次能够进入if语句,但是第二次乃至n次都不能进入if。。。。后面更改编码格式后终于能够进入if了,把服务器相关的发送文件改为ansi编码,然后像上面一样用utf-8确定传输格式。这回搞定,,每一次发送过程都能够进入。。String a[]=serverOutput.split(" ");
还有一个问题:从客户端发送信息到服务器的时候也不能进入if,同样是eclipse是编码问题,我们在eclipse改编码的时候,有些编码eclipse不支持,改过之后会乱码。我们的解决办法是,将这个文件内容剪切到记事本,清空原来的文件内容,然后改编码unicode类编码,重新把刚才记事本的内容复制到文件当中,保存,大功告成。。成功了,,,,,,,, 希望这个对自己有些帮助000000000.