安卓蓝牙开发怎么兼容5.0之前(微信小程序之蓝牙(BLE)传输中文乱码解决方法)

这两天在处理一个基于微信小程序的蓝牙传输数据,遇到的问题简单总结:

  • 微信对IOS/Android兼容真是让人头疼,可能经常遇到的就是onBLECharacteristicValueChange 部分安卓手机不回调的问题。
  • 向安卓手机写入数据时writeBLECharacteristicValue10008的问题.
  • 另外就是中文乱码问题了。

其他问题其实解决方案很多了,可以异步或延时等方式来处理,中文乱码方案也不少,今天就说一下我找到的解决方法.

之前中文乱码在Java、C++、Python、PHP等后端语言处理是非常简单的。前端就稍微复杂一点,幸好有大能已经开源可以直接使用。

安卓蓝牙开发

我们知道蓝牙设备传输数据都是二进制,所以事先需要对字符串进行转码.

按位转码的过程中进行正则判断是否是中文: /^[u3220-uFA29]+$/.test(str)

是中文,我就需要借助gbk库进行转码具体如下:

for (var i = 0,arr=[]; i < str.length; i++) { if (/^[u3220-uFA29]+$/.test(str[i])) { var t = gbk.encode(str[i]); for (var j = 0; j < 2; j++) { var code = t[j * 3 + 1] + t[j * 3 + 2]; var temp = parseInt(code, 16) arr.push(temp) } } else { arr.push(str.charCodeAt(i)); }

您可以还会对下面的文章感兴趣

使用微信扫描二维码后

点击右上角发送给好友