首页IT科技微信小程序强制转换为字符串的软件(小程序字节转GBK及UTF8)

微信小程序强制转换为字符串的软件(小程序字节转GBK及UTF8)

时间2025-06-18 16:20:38分类IT科技浏览8595
导读: 前段时间在Android原生搞的BLE扫码枪又要移植到小程序上来。本以为小程序不支持BLE的,结果一搜,还真支持-_-|| 。...

  前段时间在Android原生搞的BLE扫码枪又要移植到小程序上来               。本以为小程序不支持BLE的              ,结果一搜                      ,还真支持-_-||                       。

  蓝牙部分问题不大        ,遇到的主要问题是       ,小程序环境如何对字符编码进行判断以及如何进行编码转文字的问题       。

  扫了一阵                      ,搜到了TextDecoder               。结果小程序环境不支持……                      。

  随后搜到了一个polyfill库               , 可以用于小程序       。

  https://github.com/inexorabletash/text-encoding

  下载后的文件包含

  encoding.js 和encoding-indexes.js 两个文件        。

  使用时

坑:utf8编码数组 是能正确转换的       , gbk的不行                      。(2017 5月 v0.6.3这个版本) 调试了下                      ,需要修改encoding.js文件               ,不知道是不是个bug

//849行 return global[encoding-indexes][name]; //修改为 return global[encoding-indexes][encoding-indexes][name];

另,中文编码常用的有两种“GBK               ”和“utf8                      ”                      ,因此对于输入数组还是要先做编码判断                       ,才能正确转换为文字              。js版本的判断utf8的函数也没有搜到合适的,用之前java 的改了下              ,下面的亲测可用        。

isUTF8(buffer) { var isUtf8 = true; var end = buffer.length; for (var i = 0; i < end; i++) { var temp = buffer[i]; if ((temp & 0x80) == 0) { // 0xxxxxxx continue; } else if ((temp & 0xC0) == 0xC0 && (temp & 0x20) == 0) { // 110xxxxx 10xxxxxx if (i + 1 < end && (buffer[i + 1] & 0x80) == 0x80 && (buffer[i + 1] & 0x40) == 0) { i = i + 1; continue; } } else if ((temp & 0xE0) == 0xE0 && (temp & 0x10) == 0) { // 1110xxxx 10xxxxxx 10xxxxxx if (i + 2 < end && (buffer[i + 1] & 0x80) == 0x80 && (buffer[i + 1] & 0x40) == 0 && (buffer[i + 2] & 0x80) == 0x80 && (buffer[i + 2] & 0x40) == 0) { i = i + 2; continue; } } else if ((temp & 0xF0) == 0xF0 && (temp & 0x08) == 0) { // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx if (i + 3 < end && (buffer[i + 1] & 0x80) == 0x80 && (buffer[i + 1] & 0x40) == 0 && (buffer[i + 2] & 0x80) == 0x80 && (buffer[i + 2] & 0x40) == 0 && (buffer[i + 3] & 0x80) == 0x80 && (buffer[i + 3] & 0x40) == 0) { i = i + 3; continue; } } isUtf8 = false; break; } return isUtf8; }
声明:本站所有文章                       ,如无特殊说明或标注        ,均为本站原创发布                       。任何个人或组织              ,在未征得本站同意时                      ,禁止复制               、盗用                      、采集       、发布本站内容到任何网站               、书籍等各类媒体平台              。如若本站内容侵犯了原著者的合法权益        ,可联系我们进行处理。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
yolov5手机端部署(手把手YOLOv5输出热力图) 热加载原理(热加载技术:修改Python代码并实时查看结果 ⛵)