java里的字符编码 字符编码java通信 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用wireshark看了一下,网页发送的数据没有问题,估计是其他地方出了问题。 现在发现我服务器程序里需要统计从网页发送过来的字节数然后将相应字节数的数据发送给串口,但是从网页发送过来数据时,汉字也统计为1个字节,所以造成数据丢失,所以有什么办法可以让网页发送汉字时统计为2个字节呢?我用CMD2Send.getBytes("GB2312");测试汉字确实是两个字节,但是写到程序里又不好用了。用CMD2Send.getBytes("iso-8859-1");测试汉字只占一个字节,不知道为什么。 Quote: 引用 4 楼 hitxingkong 的回复:在你传输数据之前先把这些数据写入流中,试试双向字节流方式传输 >> 比如“中国”,串口调试助手就只收到“中”,这跟字符编码有关系吗推测:是不是遇到\0就把后面的东西忽略掉了 不是,现在是这样的,我的服务器程序可以把网页上发送过来的数据全部接收,比如发送“中国”,用wireshark查看,确实发送了4个字节,但是网页同时还会告诉服务器它发送了几个字节,而服务器会根据这个向串口发送相应的字节数。网页发送了“中国”,却告诉服务器只发送了2个字节,所以服务器虽然收到了全部数据,却只会把前两个字节(也就是“中”字)发送给串口。现在要解决的就是网页如何告诉服务器正确的字节数,我尝试用dataLength = (short)data.getBytes("GB18030").length;也不行,不知道该怎么办了。 有完整的代码吗?至少得有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也能正常处理了 ”网页告诉服务器 长度是2“ 这句话有问题,肯定是什么地方搞错了。HTTP 通信不会弄错这个事情的,因为它们只知道 byte 不知道 char 或 String 是什么东西。不是,现在是这样的,我的服务器程序可以把网页上发送过来的数据全部接收,比如发送“中国”,用wireshark查看,确实发送了4个字节,但是网页同时还会告诉服务器它发送了几个字节,而服务器会根据这个向串口发送相应的字节数。网页发送了“中国”,却告诉服务器只发送了2个字节,所以服务器虽然收到了全部数据,却只会把前两个字节(也就是“中”字)发送给串口。现在要解决的就是网页如何告诉服务器正确的字节数,我尝试用dataLength = (short)data.getBytes("GB18030").length;也不行,不知道该怎么办了。 是不是网页上用js算的长度,用js算的话就是2. java.text.ParseException: Unparseable date:"" JSP页面刷新问题 IDE路径问题。 关于数据库提取打印信息不完全的问题 eclipse导入struts jar包的问题 写了个分页显示数据的..出了点错误..帮帮忙吧..谢谢大家了.. 哪里有velocity包的中文帮助文档啊?兄弟们帮忙说下! 高手请进--代码不执行。。。急啊(100) Jive3.1.1中文搜索问题?很着急阿? 回复有分!!!请问在jsp中如何获得mac地址?? 如何获取登录用户的ip 有个新功能不知道怎么设计
至少得有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也能正常处理了