ArrayBuffer转string问题

//当没有中文的情况下,直接用

    function  deCode(ArrayBuffer) {



    var utf8 = new Uint8Array(ArrayBuffer);



    var decodedString = String.fromCharCode.apply(null, utf8);

     

   

    return data = JSON.parse(decodedString);

   

    };

    可以获得想要的 ,但是当内容有中文时,上述方法转换会导致乱码

    这时用 TextDecoder/TextEncoder 再来次转码

function  deCode(ArrayBuffer) {



    var utf8 = new Uint8Array(ArrayBuffer);

       var deCodeUtf = new TextDecoder()

    return data = JSON.parse(deCodeUtf.decode(utf8));

   

    };


   

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 将ArrayBuffer换为字符串可以使用TextDecoder API。具体步骤如下: 1. 创建一个TextDecoder对象。 2. 使用TextDecoder对象的decode()方法将ArrayBuffer换为字符串。 示例代码: ```javascript // 创建一个ArrayBuffer const buffer = new ArrayBuffer(16); // 将ArrayBuffer换为字符串 const decoder = new TextDecoder(); const str = decoder.decode(buffer); console.log(str); // 输出空字符串 ``` 注意:TextDecoder API在IE浏览器中不支持,需要使用polyfill或其他替代方案。 ### 回答2: arraybuffer是一种二进制数据类型,它可以用于在客户端和服务器端传输大量二进制数据,比如图片、音频和视频等。在处理arraybuffer时,经常需要将其换为能够读写的字符串形式,本文将介绍如何将arraybuffer换为字符串。 首先,需要了解arraybuffer实质上是一种无法解释的二进制数据类型,它不能直接换为字符串。因此,我们需要使用DataView来对arraybuffer进行解析。DataView可以读取和写入arraybuffer中的数据,并将其换为常规数据类型。 以下是将arraybuffer换为字符串的方法: 1.创建一个DataView对象。可以使用以下方法创建DataView: var view = new DataView(buffer); 其中,bufferarraybuffer类型的变量。 2.将DataView中的二进制数据换为字符串。可以使用以下方法将DataView中的二进制数据换为字符串: var decoder = new TextDecoder(encoding); var str = decoder.decode(view); 其中,encoding是字符串编码方式,如utf-8或utf-16等。TextDecoder是一个用于将二进制数据换为字符串的API,可以使用它将DataView中的二进制数据换为字符串。 换完成后,我们就可以对字符串进行操作了。在服务器端传输数据时,可以将字符串编码为JSON格式,在客户端接收数据时,可以将JSON格式的字符串解码为数据类型。还可以将字符串换为二进制数据类型,以便进行加密、解密等操作。 总之,arraybuffer是一种重要的二进制数据类型,可以用于在客户端和服务器端传输大量二进制数据,而将arraybuffer换为字符串是非常常见的操作。通过上述方法,我们可以将DataView中的二进制数据换为字符串,以便进行操作和传输。 ### 回答3: ArrayBufferJavaScript中的一种数据结构,也是Web API中新添加的功能之一。它表示了一块内存区域,可以用来存储二进制数据。而String类型则用来表示文本字符串。有时候,我们需要将ArrayBuffer化为String类型,这时候可以通过以下两种方式实现。 1.使用TextDecoder API TextDecoder是一个全局对象,它提供了将ArrayBuffer换为字符串的方法decode()。该方法接收两个参数,一个是需要换的ArrayBuffer,另一个是编码方式。我们可以选择ASCII编码或者UTF-8编码等等。示例代码如下: ```javascript let buffer = new ArrayBuffer(4); let view = new DataView(buffer); view.setInt32(0, 1234); let decoder = new TextDecoder('utf-8'); let decodedString = decoder.decode(buffer); console.log(decodedString); // output: "1234" ``` 2.使用Uint8ArrayString.fromCharCode() 在这种方式下,我们首先需要创建一个Uint8Array视图,将ArrayBuffer换成这个视图,然后使用String.fromCharCode()方法将Uint8Array视图换成字符串。示例代码如下: ```javascript let buffer = new ArrayBuffer(4); let view = new DataView(buffer); view.setInt32(0, 1234); let uint8View = new Uint8Array(buffer); let string = String.fromCharCode.apply(null, uint8View); console.log(string); // output: "1234" ``` 两种方式在大多数情况下都是有效的,但是值得注意的是,两种方式的性能不同。通常来说,当我们需要对大量的数据进行换时,使用第二种方式性能更优。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值