问题
小程序接收蓝牙设备发送的信息,但是蓝牙设备发送的是gb2312编码的arryBuffe,将发送的含中文编码转码成字符串,一直乱码。
原因
乱码的原因是编码方式不同,小程序显示的是utf-8编码,而蓝牙设备发送的是gb2312编码。
解决
按gbk对照表查出对应的utf-8编码
// 导入gbk转utf-8对照表
import Decoder from "../../utils/Decoder.js"
// ArrayBuffer转16进度字符串
function ab2hex(buffer) {
var hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function (bit) {
return ('00' + bit.toString(16)).slice(-2)+" "
}
)
return (hexArr.join('')).toUpperCase();
}
//解码
function ab2Str(code){
// 获取入参
console.log('初始值',code);
// 去除空格
arrayBuffer = code.replace(/\s+/g,"");
// gbk转utf-8 入参为 16进制不含空格
var str3 &#