zoukankan      html  css  js  c++  java
  • Java 开发问题

    在写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);"这样是不行的"
    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");
    }
    }
    //就是因为没有规定服务器的输出数据编码格式和客户端的输入数据编码格式,而造成几个人一起一直在讨论这样的一个问题:
    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确定传输格式。这回搞定,,每一次发送过程都能够进入。。
    还有一个问题:从客户端发送信息到服务器的时候也不能进入if,同样是eclipse是编码问题,我们在eclipse改编码的时候,有些编码eclipse不支持,改过之后会乱码。我们的解决办法是,将这个文件内容剪切到记事本,清空原来的文件内容,然后改编码unicode类编码,重新把刚才记事本的内容复制到文件当中,保存,大功告成。。成功了,,,,,,,, 希望这个对自己有些帮助000000000.
  • 相关阅读:
    java 算法最长连续递增子序列
    java 算法最长连续递增序列
    最大连续子数组和(Java)
    mysql时间序列与窗口函数
    CSS控制br高度
    小知识随手记(九):兄弟选择器(~和+)区别
    VUE组件递归实现自定义目录及拖拽效果
    VUE的插件解析
    VUE的mixin混入解析
    VUE高阶组件解析
  • 原文地址:https://www.cnblogs.com/iomango/p/2765641.html
Copyright © 2011-2022 走看看