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;


}

真的很神奇

相关推荐
zfoo-framework7 分钟前
【jenkins插件】
java
风_流沙13 分钟前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
m0_7482361130 分钟前
Calcite Web 项目常见问题解决方案
开发语言·前端·rust
ProtonBase42 分钟前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
Watermelo61743 分钟前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
m0_748248941 小时前
HTML5系列(11)-- Web 无障碍开发指南
前端·html·html5
乐之者v1 小时前
leetCode43.字符串相乘
java·数据结构·算法
m0_748235611 小时前
从零开始学前端之HTML(三)
前端·html
一个处女座的程序猿O(∩_∩)O3 小时前
小型 Vue 项目,该不该用 Pinia 、Vuex呢?
前端·javascript·vue.js