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;


}

真的很神奇

相关推荐
gnip3 小时前
企业级配置式表单组件封装
前端·javascript·vue.js
一只叫煤球的猫4 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
excel5 小时前
Three.js 材质(Material)详解 —— 区别、原理、场景与示例
前端
掘金安东尼6 小时前
抛弃自定义模态框:原生Dialog的实力
前端·javascript·github
皮皮林5516 小时前
IDEA 源码阅读利器,你居然还不会?
java·intellij idea
hj5914_前端新手9 小时前
javascript基础- 函数中 this 指向、call、apply、bind
前端·javascript
薛定谔的算法9 小时前
低代码编辑器项目设计与实现:以JSON为核心的数据驱动架构
前端·react.js·前端框架
Hilaku10 小时前
都2025年了,我们还有必要为了兼容性,去写那么多polyfill吗?
前端·javascript·css
yangcode10 小时前
iOS 苹果内购 Storekit 2
前端
LuckySusu10 小时前
【js篇】JavaScript 原型修改 vs 重写:深入理解 constructor的指向问题
前端·javascript