uniapp蓝牙传输中文乱码问题

uniapp蓝牙传输中文乱码问题

0 现状

传输数字和字母的json字符串都可以解析,有个中文的硬件那边就解析不了,替换一下发数据的处理函数即可

1 原先字符串转化函数

js 复制代码
const stringToBytes = (msg) => {
	 const buffer = new ArrayBuffer(msg.length)
	 const dataView = new DataView(buffer)
	 for (var i = 0; i < msg.length; i++) {
	 	dataView.setUint8(i, msg.charAt(i).charCodeAt())
	}
	 return buffer


}

2 新的字符串替换函数

js 复制代码
const stringToBytes = (msg) => {
	
	const bytes = [];

	for (let i = 0; i < msg.length; ++i) {
		const charCode = msg.charCodeAt(i);

		if (charCode < 0x80) {
			bytes.push(charCode);
		} else if (charCode < 0x800) {
			bytes.push(0xC0 | (charCode >> 6), 0x80 | (charCode & 0x3F));
		} else if (charCode < 0x10000) {
			bytes.push(
				0xE0 | (charCode >> 12),
				0x80 | ((charCode >> 6) & 0x3F),
				0x80 | (charCode & 0x3F)
			);
		} else if (charCode < 0x200000) {
			bytes.push(
				0xF0 | (charCode >> 18),
				0x80 | ((charCode >> 12) & 0x3F),
				0x80 | ((charCode >> 6) & 0x3F),
				0x80 | (charCode & 0x3F)
			);
		} else if (charCode < 0x4000000) {
			bytes.push(
				0xF8 | (charCode >> 24),
				0x80 | ((charCode >> 18) & 0x3F),
				0x80 | ((charCode >> 12) & 0x3F),
				0x80 | ((charCode >> 6) & 0x3F),
				0x80 | (charCode & 0x3F)
			);
		} else {
			bytes.push(
				0xFC | (charCode >> 30),
				0x80 | ((charCode >> 24) & 0x3F),
				0x80 | ((charCode >> 18) & 0x3F),
				0x80 | ((charCode >> 12) & 0x3F),
				0x80 | ((charCode >> 6) & 0x3F),
				0x80 | (charCode & 0x3F)
			);
		}
	}

	const buffer = new Uint8Array(bytes).buffer;
	return buffer;


}

真的很神奇

相关推荐
不想秃头的程序员6 小时前
Vue3 封装 Axios 实战:从基础到生产级,新手也能秒上手
前端·javascript·面试
Sayuanni%36 小时前
初阶_多线程1(线程含义与关键属性)
java
程序媛徐师姐6 小时前
Java基于微信小程序的模拟考试系统,附源码+文档说明
java·微信小程序·java模拟考试系统小程序·模拟考试微信小程序·模拟考试系统小程序·模拟考试小程序·java模拟考试小程序
疯狂敲代码的老刘7 小时前
JDK 1.6到25 全版本网盘合集 (Windows + Mac + Linux)
java·linux·windows·macos·jdk
夕除7 小时前
js--15
java·jvm·spring
数研小生7 小时前
亚马逊商品列表API详解
前端·数据库·python·pandas
你听得到117 小时前
我彻底搞懂了 SSE,原来流式响应效果还能这么玩的?(附 JS/Dart 双端实战)
前端·面试·github
不倒翁玩偶7 小时前
npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
前端·npm·node.js
曾经的三心草7 小时前
redis-9-集群
java·redis·mybatis