对于2进制数据来说,是没有中文字符的问题的.具体中文字符在byte[]中
是几个长度,对于你传输来说都是一样的.
把传输内容保存为byte[],计算出长度,再在服务器端接收.
至于在服务器端汉字出现“?”,是显示的问题,与传输无关.

解决方案 »

  1.   

    现在我就是在String转化为byte[]有问题。当英文与中文同时出现时出现"?"
      

  2.   

    这其实是一个显示的问题,你的客户端是否支持UNICODE字符集?在服务器端使用unicode的格式来输出就可以了(使用从Reader,Writer衍生出来的类的方法)
      

  3.   

    现在问题的实质应该说是:如何将String中的字符正确的转化放入byte数组中存放。
      

  4.   

    使用中文字符集或者是UNICODE字符集转化(使用中文字符集的代码如下),在你的例子中传输可以一次完成,没有必要再浪费一次连接时间。String.getBytes("gb2312"); 个人观点,希望对你有用。
      

  5.   

    试试先将中文转换成UNICODE,再存放到String中,输出时再换回来试试,
    等待你的答复,我也想知道答案,一起探讨!!
      

  6.   

    传送的都是byte[],转换成中文那就要把byte[]编码成为一个String.
      

  7.   

    同志们我现在需要发送的数据是  1111你好 接一个自己定义的结束标识0xfa。
    我是这样定义的
    public static final char ENDMSG = 0xfa;
    String a = "1111你好" + ENDMSG;
    将上述数据发送服务器端时,若使用a.getBytes("GBK"),数据转换不正确。
    各位可有好方法?
      

  8.   

    1、Server端和Client端应该使用相同的代码集;
    2、可以在发送的数据包前加上数据包长度,而不应使用特殊符号作为结尾标志;
    3、IP包的最大长度大概为1400左右长度,收取时应循环接收;这个问题如果这样做很容易解决,不是什么太麻烦的东西。个人观点,希望对你有用。