解决微信小程序不支持TextEncoder/TextDecoder对象

这篇具有很好参考价值的文章主要介绍了解决微信小程序不支持TextEncoder/TextDecoder对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述:在使用小程序开发者工具开发小程序中使用到了CRC算法,其中有一行代码使用到了TextEncoder对象,在开发工具中一切正常,到手机上会报出错误错误如下:
MiniProgramError
TextEncoder is not defined
ReferenceError: TextEncoder is not defined

解决办法:

// 报错代码
const encoder = new TextEncoder("utf-8");
const data = encoder.encode(inputString);

方法一:使用兼容写法

//TextEncoder
unescape(encodeURIComponent(inputString)).split("").map(val => val.charCodeAt());
//TextDecoder
decodeURIComponent(escape(String.fromCharCode(...['需解码的内容替换'])));

方法二:引入库

GitHub地址-EncoderDecoderTogether.min.js

小程序里直接require()引入,全局就有TextEncoder / TextDecoder 了。

// app.js
require('path/to/EncoderDecoderTogether.min.js')

或者使用NPM安装,安装方式见文档

GitHUb地址-FastestSmallestTextEncoderDecoder

这个库只支持utf-8编码,其他编码的话可以看看这个

Github地址-text-encoding

最后附上CRC-16代码文章来源地址https://www.toymoban.com/news/detail-701596.html

function calculateCRC16(inputString) {
  // 将输入字符串编码为字节数组(使用UTF-8编码)
  const data = unescape(encodeURIComponent(inputString))
    .split("")
    .map((val) => val.charCodeAt());

  let crc = 0xffff;
  for (let i = 0; i < data.length; i++) {
    crc ^= data[i] & 0xff;
    for (let j = 0; j < 8; j++) {
      if (crc & 0x0001) {
        crc = (crc >> 1) ^ 0x8006; // 使用 CRC-16 CCITT 多项式
      } else {
        crc = crc >> 1;
      }
    }
  }

  // 将 CRC-16 校验值格式化为十六进制字符串
  let crc16Hex = crc.toString(16).toUpperCase();

  // 如果 CRC-16 校验值长度不足 4 位,前面补零
  while (crc16Hex.length < 4) {
    crc16Hex = "0" + crc16Hex;
  }

  return crc16Hex;
}

到了这里,关于解决微信小程序不支持TextEncoder/TextDecoder对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序 - 最新超详细 watch 侦听器功能,支持监听对象、数组及各种复杂对象数据,可在任意页面或组件中使用(绝非网上千篇一律的 “setWatcher“ 不能监听对象的垃圾方法,方案开箱即用)

    网上的教程全都是一摸一样的 setWatcher(this) 方案,重要的是这种方案不能监听对象,可以说一无是处。 本文 在微信小程序中实现 watch 监听器监听数据的功能,让小程序拥有 watch 监听对象、数组等复杂数据变化的能力, 您按照教程几分钟就能搞定,保证 100% 好用且使用方法

    2024年02月11日
    浏览(125)
  • 【Vue】Vue的$ref属性为空对象或者为undefined问题及解决办法(涵盖uniapp/H5/微信小程序)

    目录 问题:获取this.$refs为空对象或者为undefined 原因一:在uniapp中,非H5端只能用于获取自定义组件,不能用于获取内置组件实例(如:view、text) 解决方法:ref在非H5端使用在自定义的组件 原因二:使用了版本过低的调试基础库 原因三:ref组件使用了条件渲染,即v-if、v-

    2024年02月09日
    浏览(47)
  • 微信小程序项目实战 微信小程序的事件对象

    目录 小程序前后端交互 自定义组件的使用 语法说明 properties 定义 案例  微信小程序的事件对象 e.target和e.currentTarget  微信小程序的事件传参 传参方式一: data-key=\\\'value\\\' 传参方式二: id=\\\'value\\\' scroll-view 使用  scroll-view 中使用flex布局 scroll-into-view 下拉刷新 上拉加载 微信小程

    2024年02月09日
    浏览(129)
  • 微信小程序 -- npm 支持

    目录 npm 支持 1. 构建 npm 2. 自定义构建 npm 3. Vant 组件的使用方式 4. Vant 组件的样式覆盖 1. 构建 npm 目前小程序已经支持使用 npm 安装第三方包,但是这些 npm 包在小程序中不能够直接使用,必须得使用小程序开发者工具进行构建后才可以使用。 为什么得使用小程序开发者工具

    2024年02月22日
    浏览(33)
  • uniapp悬浮图标支持拖动支持微信小程序

    最近改了个UI,按钮放哪都不合适,看到别人都是用悬浮按钮,于是我自己也搞了一个,随心所欲存放位置,的确要比固定的好看的多,下面的是一个截图,代码放在下面自取 支持滑动、点击 完整代码片段:

    2024年02月11日
    浏览(51)
  • 微信小程序中遍历对象

    今天在写小程序的时候,遇见一个需求,当用户下单时,生成的订单中可能会存在过期或者不能购买的产品,后端返回的是一个对象:(产品id+错误码), 所以就得循环返回的对象,找出对应的商品 一、 先定义对象数据 二:执行遍历方法:

    2024年02月14日
    浏览(35)
  • 微信小程序不支持svg图片

    如果想使用svg也要转换成base64或者网络图片 否则在开发者工具中是显示图片的 而在手机微信预览中就无法显示图片 让人疑惑 require()是nodejs的写法 用于导入模块、JSON 和本地文件 可以使用相对路径 该路径可以使用路径别名命名的目录或当前工作目录进行解析。 在vue中使用

    2024年02月09日
    浏览(39)
  • 对象存储OSS(微信小程序直传实践)

    客户端进行表单直传到OSS时,会从浏览器向OSS发送带有Origin的请求消息。OSS对带有Origin头的请求消息会进行跨域规则(CORS)的验证。因此需要为Bucket设置跨域规则以支持Post方法。 登录阿里云OSS管理控制台 单击 Bucket列表 ,然后单击目标Bucket名称 在左侧导航栏,选择 权限管

    2024年02月11日
    浏览(44)
  • WebStorm 支持微信小程序的 rpx 单位

    webstorm在写微信小程序代码的时候,rpx单位会警告,并且格式化rpx单位与数值之间会有一个空格。 解决方法: 在plugins中搜索 wechat mini program support ,安装并下载这个插件,下载完成apply,然后ok; 搜索 Wechat Mini Program ,将小程序支持 启用 一下,就可以啦~ 注意:如果1、2两步

    2024年02月11日
    浏览(86)
  • 微信小程序_实现markdown支持代码复制功能

    大家好,我是yma16,不止前端,本文将介绍微信小程序中 markdown的代码复制功能实现。 往期微信小程序文章 小程序自定义微信昵称和头像 小程序制作markdown博客 小程序结合chatgpt制作聊天页面 小程序组件传值 小程序复制到粘贴板的功能实现 基于towxml渲染markdown 定位 因为是基

    2024年02月15日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包