欢迎您成为我的读者,希望这篇文章能给你一些帮助。
0x00 前言
大家好,我是阿辉。
最近的工作在做Android手机端和C#桌面端通过蓝牙交互方面的活,碰到了一个问题,咱们今天来简单回顾下。
在C#端将字符串转换为常规的字节流,在Android端获取到字节流后,直接进行转换为字符串,发现出现乱码的情况。很纳闷,奇了怪了,不应该呀,这么简单的操作咋可能出现乱码呢。
查找资料发现,原来是JAVA和C#在对于字符串的编码问题上,存在差异。
这里强调大家,别用C#的思维去写Android的代码,有时候总会出现奇怪的问题。
在查找了资料后,确定对于字符串部分采用传统的ASCII格式来传输字节流。
C#端
//actionJob为待传输的字符串
dataBytes.AddRange(Encoding.ASCII.GetBytes(actionJob));
Android端
//m_streamBuf中是接收到的字节流
StringBuffer sb=new StringBuffer();
int actionJobLength=m_streamBuf.getShort();
char[] tChars=new char[actionJobLength];
for (int i=0;i<actionJobLength;i++){
tChars[i]=(char)m_streamBuf.get();
}
sb.append(tChars);
realTimeLocationData.dbActionJob=sb.toString();
这些知识是很简单的常识性问题,当我们在处理或者长时间没有使用的时候就会出现遗忘,那么隔一段时间来看看这些基础知识,有助于我们在解决更复杂问题时更游刃有余。
0x01 寄语
人生短暂,我不想去追求自己看不见的,我只想抓住我能看得见的。
原创不易,给个关注。
技术群:添加小编微信并备注进群
小编微信:mm1552923
公众号:dotNet编程大全