对readByteArray进行解码,打开手机调试的时候正常。但是打包后安装或者不打开手机调试的话,报错:
ReferenceError: Can't find variable: TextDecoder
代码如下:
let totalUint8Array = new Uint8Array(this.readByteArray)
let qrContent = new TextDecoder("gb2312").decode(totalUint8Array);
对readByteArray进行解码,打开手机调试的时候正常。但是打包后安装或者不打开手机调试的话,报错:
ReferenceError: Can't find variable: TextDecoder
代码如下:
let totalUint8Array = new Uint8Array(this.readByteArray)
let qrContent = new TextDecoder("gb2312").decode(totalUint8Array);
10 个回复
DCloud_UNI_GSQ
机型和系统信息补充一下
4***@qq.com - liuxiaohui
我也运见同样的问题:
荣耀畅玩9X
19:07:54.095 ReferenceError: TextDecoder is not defined。
在调试手机时,TextDecoder 正常。拨掉数据线运行,报上面的错误。
DCloud_UNI_GSQ
TextDecoder 在不同设备存在兼容问题,调试的时候js是运行在电脑上的
8***@qq.com
那怎么处理呢,有没有替代方案?
2020-10-30 16:28
DCloud_UNI_GSQ
回复 8***@qq.com: 尝试用 polyfill 兼容,比如在npm搜索一下:https://www.npmjs.com/search?q=TextDecoder
2020-12-03 18:12
2***@qq.com
https://www.npmjs.com/package/fast-text-encoding
这个可以,打补丁
2023-06-07 20:06
Jxzx
回复 2***@qq.com: 您好,关于fast-text-encoding这个库打补丁这个问题。我这边遇到一些问题,想请教一下您。我是uniapp接入web3钱包,他引入的文件中有使用TextEncoder 在H5上是可以的,但是运行到android 真机上。提示 TextEncoder is not defined 。请问这个补丁能解决嘛,我尝试了一下,结果还是不行。
2023-07-05 14:28
Jxzx
回复 Jxzx: main.js 中全局挂载。import {
TextEncoder,
TextDecoder
} from 'text-decoding'
global.TextEncoder = TextEncoder;
global.TextDecoder = TextDecoder;
2023-07-05 15:56
8***@qq.com
同问,安卓设备试了不同的机型,全部是TextDecoder is not defined。
深
这个问题解决了吗?
小辛一族
整理下心得 import { TextEncoder, TextDecoder } from 'text-decoding'
传入arrayBuf(蓝牙接收到的)
let u8arr = Array.prototype.map.call(new Uint8Array(arrayBuf), x => x)
let decoder = new TextDecoder('gb18030').decode(new Uint8Array(u8arr))
return decoder
2***@qq.com
有没有详细点的使用教程
2022-03-17 15:35
小李爱吃鱼
大佬 有详细的教程可以参考一下吗
2022-10-15 11:37
过景不候
可以解决 感谢靓仔
2023-11-29 11:09
喜欢技术的前端 - QQ---445849201
大佬们,解决了吗
小辛一族
按照我的方法可以解决
2021-07-19 09:55
喜欢技术的前端
回复 小辛一族: 好的感谢
2021-07-19 11:11
小李爱吃鱼
var trimedStr = strhex.trim();
var rawStr = trimedStr.substr(0, 2).toLowerCase() === "0x" ? trimedStr.substr(2) : trimedStr;
var len = rawStr.length;
if (len % 2 !== 0) {
alert("Illegal Format ASCII Code!");
return "";
}
var curCharCode;
var resultStr = [];
for (var i = 0; i < len; i = i + 2) {
curCharCode = parseInt(rawStr.substr(i, 2), 16); // ASCII Code Value
resultStr.push(String.fromCharCode(curCharCode));
}
return resultStr.join("");
可以改为这种
faster
可以使用第三方的npm包 iconv-lite 来解决
首先在项目目录下 初始化npm环境
npm init -y
然后安装 iconv-lite包
npm i iconv-lit
使用前先导入
需要编码的地方
iconv.encode(‘hello world’,'ascii')
iconv.encode(‘汉字’,'gbk')
iconv.encode(‘汉字’,'utf8')
2***@qq.com
在开发安卓app时用到读取nfc数据转换成字符串,遇到此问题
报错:ReferenceError: TextDecoder is not defined
解决:
第一步 安装依赖:
npm install text-decoding
第二步 在main.js中全局挂载
import { TextEncoder, TextDecoder } from 'text-decoding'
global.TextEncoder = TextEncoder
global.TextDecoder = TextDecoder
再使用就不会报错了