解决方案 »

  1.   

    用wireshark看了一下,网页发送的数据没有问题,估计是其他地方出了问题。
      

  2.   

    现在发现我服务器程序里需要统计从网页发送过来的字节数然后将相应字节数的数据发送给串口,但是从网页发送过来数据时,汉字也统计为1个字节,所以造成数据丢失,所以有什么办法可以让网页发送汉字时统计为2个字节呢?我用CMD2Send.getBytes("GB2312");测试汉字确实是两个字节,但是写到程序里又不好用了。用CMD2Send.getBytes("iso-8859-1");测试汉字只占一个字节,不知道为什么。
      

  3.   

    Quote: 引用 4 楼 hitxingkong 的回复:

    在你传输数据之前先把这些数据写入流中,试试双向字节流方式传输
      

  4.   

    >> 比如“中国”,串口调试助手就只收到“中”,这跟字符编码有关系吗推测:是不是遇到\0就把后面的东西忽略掉了
      

  5.   

    不是,现在是这样的,我的服务器程序可以把网页上发送过来的数据全部接收,比如发送“中国”,用wireshark查看,确实发送了4个字节,但是网页同时还会告诉服务器它发送了几个字节,而服务器会根据这个向串口发送相应的字节数。网页发送了“中国”,却告诉服务器只发送了2个字节,所以服务器虽然收到了全部数据,却只会把前两个字节(也就是“中”字)发送给串口。现在要解决的就是网页如何告诉服务器正确的字节数,我尝试用dataLength = (short)data.getBytes("GB18030").length;也不行,不知道该怎么办了。
      

  6.   

    有完整的代码吗?
    至少得有data和dataLength的定义和赋值语句。下面是我写的例子,输出是4。package topics_390899774;import java.io.UnsupportedEncodingException;public class LengthTest {    public static void main(String[] args) throws UnsupportedEncodingException {
            String data = "中国";
            short dataLength = (short) data.getBytes("GB18030").length;
            
            System.out.println(dataLength);
        }}
    输出
    4
    另外建议:
    可以考虑只传递数据过去,尾部初始化为0
    这样接受方不用知道length也能正常处理了
      

  7.   

    ”网页告诉服务器 长度是2“ 这句话有问题,肯定是什么地方搞错了。HTTP 通信不会弄错这个事情的,因为它们只知道 byte 不知道 char 或 String 是什么东西。不是,现在是这样的,我的服务器程序可以把网页上发送过来的数据全部接收,比如发送“中国”,用wireshark查看,确实发送了4个字节,但是网页同时还会告诉服务器它发送了几个字节,而服务器会根据这个向串口发送相应的字节数。网页发送了“中国”,却告诉服务器只发送了2个字节,所以服务器虽然收到了全部数据,却只会把前两个字节(也就是“中”字)发送给串口。现在要解决的就是网页如何告诉服务器正确的字节数,我尝试用dataLength = (short)data.getBytes("GB18030").length;也不行,不知道该怎么办了。
      

  8.   

    是不是网页上用js算的长度,用js算的话就是2.