收藏
回答

小程序不支持TextDecoder?

下载云存储的json文件,涉及汉字转码问题,开发工具上完整运行

let gbk = new TextDecoder('gbk').decode(new Uint8Array(res.data)) //这里把gbk文件读入转换成了utf8的String

真机上

TypeError: TextDecoder is not a constructor

求高手解答


回答关注问题邀请回答
收藏

6 个回答

  • Uncle
    Uncle
    2021-04-07
    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:
    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
    
    2021-04-07
    有用 8
    回复 6
    • 首秀_ping
      首秀_ping
      2022-05-20
      这个可以,谢谢大佬
      2022-05-20
      回复
    • 阳光新鲜
      阳光新鲜
      2022-05-31
      感谢,简单明了
      2022-05-31
      回复
    • Sam
      Sam
      2022-10-11
      可惜这个并不是gbk
      2022-10-11
      回复
    • F.
      F.
      2023-12-01
      哥,我叫你哥了,你就是我的恩人!
      2023-12-01
      回复
    • Double
      Double
      01-16回复F.
      能行?
      01-16
      回复
    查看更多(1)
  • 朷莰菛
    朷莰菛
    2020-10-16

    https://github.com/inexorabletash/text-encoding下载了encoding.js。

    由于码表500多k,我只需要gbk转utf8,所以仅仅保留了码表中gb18030,剩余141k。

    var encoding = require("encoding.js");

    let gbk = new encoding.TextDecoder('gbk').decode(new Uint8Array(res.data))

    问题解决,希望对遇到类似问题的有所帮助,所以写在这里。

    这个转换没有数学关系,所以网上搜索的各种代码基本无效。


    2020-10-16
    有用 8
    回复 8
    • away
      away
      2021-02-17
      超级有用,赞!
      2021-02-17
      回复
    • 立
      2021-04-09
      非常感谢
      2021-04-09
      回复
    • 💋🌙🐠
      💋🌙🐠
      2021-04-22
      new encoding.TextEncoder('gbk').encode(str) 字符串转GBK编码好像不行
      2021-04-22
      回复
    • ConstancyMan
      ConstancyMan
      2022-07-21
      不成功啊
      2022-07-21
      回复
    • 微言传输住手
      微言传输住手
      2022-07-28
      兄弟牛逼啊 解决了我的问题么么哒
      2022-07-28
      回复
    查看更多(3)
  • 帕特里克.锅
    帕特里克.锅
    2022-04-24

    转gbk 乱码可能是个bug。。需要改下encoding.js文件。

    https://www.cnblogs.com/uncleguo/p/16186906.html

    2022-04-24
    有用 2
    回复
  • 智宗
    智宗
    06-07

    感谢分享

    06-07
    有用
    回复
  • 风之烬
    风之烬
    2021-08-03

    被坑惨了,使用这破小程序PC版本解析protobuf,调试模式不闪退,PC版本真机一直闪退,就是由于readString()会调用自带的TextEncoder.decode()解析,导致闪退,按文章方式引入自定义js完美解决。

    https://www.npmjs.com/package/pbf

    • Improved readString and writeString to use HTML5 TextEncoder and TextDecoderwhere available.
    2021-08-03
    有用
    回复
  • 幺捌柒肆
    幺捌柒肆
    2021-01-06

    转完后您这边会出现乱码不?

    2021-01-06
    有用
    回复
登录 后发表内容
问题标签