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;


}

真的很神奇

相关推荐
Software攻城狮2 分钟前
【uniapp和普通web 端开发的区别】
前端·uni-app·notepad++
IT_陈寒4 分钟前
Vue项目实战经验分享:动态组件在Keep-Alive下的缓存陷阱
前端·人工智能·后端
zaizai10075 分钟前
STL深度剖析2
java·c++·算法
2501_915921436 分钟前
iOS 实时日志怎么看?KeyMob 的日志过滤、崩溃报告与符号化
android·ios·小程序·https·uni-app·iphone·webview
数智奔流17 分钟前
MiniMax的低价攻势,撞上“背题”疑云
前端·javascript·算法
2601_9540056218 分钟前
11 种触发 × 18 种行为:ricon 交互编排系统全解
前端·后端·物联网·数学建模·信息可视化·交互
周厉20 分钟前
WebSocket 使用场景与实现方法:Java + Vue3 全栈实战
java·websocket·vue3·websocket双向通讯
wdfk_prog22 分钟前
lwip教程 38:从 `lwipopts.h` 到 Port Contract——lwIP 裁剪、构建选择、OS Port 与 Network Port
java·开发语言
吹什么轩25 分钟前
MySQL 内置函数全景:日期 / 字符串 / 数学 / 其他,一次讲透(附索引杀手排查)
java·数据库·面试