最近在写一个服务器程序,其功能是接收手机端所发来的信息,并将其直接写入数据库中。但是在开发过程中,发现从客户端接收英文是可以正常接收显示的,但是一接收中文就会出现乱码问题,并且在写入数据库的相应数据也是乱码的。小弟呗这个问题卡了2天了,希望能够得到各位大神的指点。
感激感激。。接收中文乱码Android乱码网络编程服务器

解决方案 »

  1.   

    客户端"Data".getBytes("UTF-8")
    服务端new String(data, "UTF-8")
    如果不行把数据库的编码也变成“UTF-8”
    领会精神吧
      

  2.   

    传输中文的时候需要转码啦,encode
      

  3.   

    在不用以上方法的前提下 在服务器接收数据是“浣犲ソ.鐢?” 我发送的是“你好,男”
    在使用的情况下接收到的是“[B@4053f5b[B@4053f5b0[B@4053f5b0”;请给点指点
      

  4.   


    服务器接收的数据应该是byte数组吧?“[B@4053f5b”这应该是byte数组的toString显示的东西,先把byte数组转换成字符串,用这个构造函数:java.lang.String.String(byte[], String)另外,客户端发送的数据是用户输入的吗?如果是从别的地方读取的数据,那编码就不好说了。
      

  5.   


    服务器接收的数据应该是byte数组吧?“[B@4053f5b”这应该是byte数组的toString显示的东西,先把byte数组转换成字符串,用这个构造函数:java.lang.String.String(byte[], String)另外,客户端发送的数据是用户输入的吗?如果是从别的地方读取的数据,那编码就不好说了。恩接收的是byte数组,数据也是用户自己输入的。java.lang.String.String(byte[], String)这个函数怎么用呢,貌似这个对我有点陌生了呵呵,我用tostring方法把字节数组转成了字符串了,但是输出的还是[B@4053f5b,还有就是刚才我在客户端没用UTF8服务器接收的时候用了new String(data, "UTF-8")结果发了三句话一句半句能正常显示另一半就不能了?请大神指点一二。。谢谢
      

  6.   


    byte[].toString()不是用来将byte[]转换成字符串的。
    要用new String(byte[], "UTF-8")来转换成字符串。三句话一句半正常,估计是你发送的时候把字符串截断了吧……
      

  7.   


    服务器接收的数据应该是byte数组吧?“[B@4053f5b”这应该是byte数组的toString显示的东西,先把byte数组转换成字符串,用这个构造函数:java.lang.String.String(byte[], String)另外,客户端发送的数据是用户输入的吗?如果是从别的地方读取的数据,那编码就不好说了。恩接收的是byte数组,数据也是用户自己输入的。java.lang.String.String(byte[], String)这个函数怎么用呢,貌似这个对我有点陌生了呵呵,我用tostring方法把字节数组转成了字符串了,但是输出的还是[B@4053f5b,还有就是刚才我在客户端没用UTF8服务器接收的时候用了new String(data, "UTF-8")结果发了三句话一句半句能正常显示另一半就不能了?请大神指点一二。。谢谢

    服务器接收的数据应该是byte数组吧?“[B@4053f5b”这应该是byte数组的toString显示的东西,先把byte数组转换成字符串,用这个构造函数:java.lang.String.String(byte[], String)另外,客户端发送的数据是用户输入的吗?如果是从别的地方读取的数据,那编码就不好说了。恩接收的是byte数组,数据也是用户自己输入的。java.lang.String.String(byte[], String)这个函数怎么用呢,貌似这个对我有点陌生了呵呵,我用tostring方法把字节数组转成了字符串了,但是输出的还是[B@4053f5b,还有就是刚才我在客户端没用UTF8服务器接收的时候用了new String(data, "UTF-8")结果发了三句话一句半句能正常显示另一半就不能了?请大神指点一二。。谢谢
    客户端的写入流代码k1=(length/256);
            k2=(length/256)/256;
            k3=(length/256)/256/256;
            header[3]=(byte) k3;
            header[2]=(byte) (k2-k3*256);
            header[1]=(byte) (k1-k2*256-k3*256*256);
            header[0]=(byte) (length-k1*256-k2*256*256-k3*256*256*256);
            bw.write(header);
    服务器读流代码is.read(header1,0,4);String b=new String(header1,0,4);
      

  8.   


    byte[].toString()不是用来将byte[]转换成字符串的。
    要用new String(byte[], "UTF-8")来转换成字符串。三句话一句半正常,估计是你发送的时候把字符串截断了吧……现在客户端写入byte 数组的数据在本地通过for循环一个一个打印里面内容正确,但是  String l=new String(header,"UTF-8"); (header就是数组)System.out.println(l);打印就是“□□□□□□”要是用tostring方法输出就是[B@4053f5b。在服务器方面我要是收到多于2个中文能正常显示内容但是尾巴后面会加上两个“??”要是收到一个中文字符又是乱码了。
      

  9.   


    byte[].toString()不是用来将byte[]转换成字符串的。
    要用new String(byte[], "UTF-8")来转换成字符串。三句话一句半正常,估计是你发送的时候把字符串截断了吧……现在客户端写入byte 数组的数据在本地通过for循环一个一个打印里面内容正确,但是  String l=new String(header,"UTF-8"); (header就是数组)System.out.println(l);打印就是“□□□□□□”要是用tostring方法输出就是[B@4053f5b。在服务器方面我要是收到多于2个中文能正常显示内容但是尾巴后面会加上两个“??”要是收到一个中文字符又是乱码了。昨天问题在你指导下解决了很多,但是现在出现了接收偶数个中文能正常显示,接收奇数个就不能了,比如穿3个子前两个可以正常显示第三个就不行了,这是什么原因呢,请您赐教下,谢谢了。