Javascript的ArrayBuffer从Utf8ArrayToString

本文介绍了一种将ArrayBuffer中的UTF8编码数据转换为JavaScript字符串的方法。通过自定义函数Utf8ArrayToStr,逐字节解析ArrayBuffer,并适配不同长度的UTF8字符,最终还原出原始字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于项目需要,需要从一个已知的ArrayBuffer中读取出字符串,虽然环境是typescript,但最终还是用的js的代码改了一下解决,

public Utf8ArrayToStr(array):string {
    var out,i,len,c;
    var char2,char3;

    out = "";
    len = array.length;
    i = 0;
    while(i < len) {
        c = array[i++];
        switch(c >> 4) {
            case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
                // 0xxxxxxx
                out += String.fromCharCode(c);
                break;
            case 12: case 13:
                // 110x xxxx   10xx xxxx
                char2 = array[i++];
                out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
                break;
            case 14:
                // 1110 xxxx  10xx xxxx  10xx xxxx
                char2 = array[i++];
                char3 = array[i++];
                out += String.fromCharCode(((c & 0x0F) << 12) |
                    ((char2 & 0x3F) << 6) |
                    ((char3 & 0x3F) << 0));
                break;
        }
    }

    return out;
}

有必要的话,可能还得decodeURIComponent一次

var bufView = new Uint8Array(bin);
var encodedString = this.Utf8ArrayToStr(bufView);
encodedString = decodeURIComponent(encodedString);

这方面找来的资料和网上的一些方法大多是Unicode编码处理,对UTF8无效,最后还是在一个角落里找来的解决,纪录一下,免得给忘记了

 

posted on 2015-12-22 12:59 nowpaper 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/nowpaper/p/5066317.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值