微信小程序和低版本浏览器并不支持新的TextEncoder和TextDecoder,但是可以用其他的方式来做到相同的事情。
TextEncoder:
var encoder = new TextEncoder();
encoder.encode("中文abc");
//result : Uint8Array(9) [228, 184, 173, 230, 150, 135, 97, 98, 99]
兼容写法:
unescape(encodeURIComponent("中文abc")).split("").map(val => val.charCodeAt());
//result : (9) [228, 184, 173, 230, 150, 135, 97, 98, 99]
对比可以发现数组内的内容是一样的,由此可知道TextDecoder的兼容写法。
TextDecoder:
var decoder = new TextDecoder();
decoder.decode(Uint8Array.from([228, 184, 173, 230, 150, 135, 97, 98, 99]));
//result : 中文abc
兼容写法:
decodeURIComponent(escape(String.fromCharCode(...[228, 184, 173, 230, 150, 135, 97, 98, 99])));
//result : 中文abc