Javascript的ArrayBuffer从Utf8ArrayToString
由于项目需要,需要从一个已知的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无效,最后还是在一个角落里找来的解决,纪录一下,免得给忘记了
Javascript的ArrayBuffer从Utf8ArrayToString的更多相关文章
- [转] JavaScript 之 ArrayBuffer
JS里的ArrayBuffer 还记得某个晚上在做 canvas 像素级操作,发现存储像素的数据格式并不是Array类型,而是ArrayBuffer,心想这是什么鬼?后来查了一些资料,发现自己这半年来 ...
- [JavaScript]使用ArrayBuffer和Blob编辑二进制流
Blob()构造方法返回一个新的Blob对象. 内容是包含参数array的二进制字节流. 语法 var aBlob = new Blob( array, options ); 参数 array is ...
- ArrayBuffer简析
关键技术: JavaScript,ArrayBuffer,Type Array,DataView,Web Worker,性能对比 ArrayBuffer 在文章开头列出了这些关键字,主要就是让大家了解 ...
- 【前端知乎系列】ArrayBuffer 和 Blob 对象
本文首发在 个人博客 更多丰富的前端学习资料,可以查看我的 Github: <Leo-JavaScript>,内容涵盖数据结构与算法.HTTP.Hybrid.面试题.React.Angul ...
- Chakra TypedArray代码实现笔记
ArrayBuffer.cpp阅读 对象继承关系 JavascriptArrayBuffer: ArrayBuffer: ArrayBufferBase: DynamicObject: Recycla ...
- Websocket,ProtoBuffer,Hightlight,JSON 等,最近遇到的一些知识点小结
websocket websocket 支持但不仅限于web场景,是一种封装好的socket通信协议,可以用来做C-S通信. 可以通过设置 binaryType 来指定通信的数据流格式,从而达到简洁高 ...
- WebGL简易教程(十五):加载gltf模型
目录 1. 概述 2. 实例 2.1. 数据 2.2. 程序 2.2.1. 文件读取 2.2.2. glTF格式解析 2.2.3. 初始化顶点缓冲区 2.2.4. 其他 3. 结果 4. 参考 5. ...
- JavaScript ArrayBuffer浅析
时隔一年半,再次来到博客园.回首刚接触前端时所写的两篇随笔,无法直视啊~ --------------------------------------------------------------- ...
- javascript ArrayBuffer类型化数组和视图的操作
个人理解类型化数据就是内存分配区域,不同数据的存储就是视图DataView咯 var buffers = []; var json = {"id":100, "name& ...
随机推荐
- jquery.serialize() 函数详解
jQuery - serialize() 方法 W3School给出的定义与用法: serialize() 方法通过序列化表单值,创建 URL 编码文本字符串. 您可以选择一个或多个表单元素(比如 i ...
- BIEE建模参考规范
BIEE建模参考规范 注:本文基于网上盛传的“BIEE建模黄金法则”,并做了更为细致的讲解,以及修改. 物理层 1. 在可能的情况下,配置你的连接池使用本地驱动来连接物理数据库.例如,使用OCI而不 ...
- CMPP3.0 长短信实现方案
长短信息:是指超过70个汉字,140个字节的信息内容 一.CMPP协议相关字段分析 CMPP协议具体部分请参考<中国移动互联网短信网关接口协议(V3.0.0).doc> CMPP_SUBM ...
- mysql服务性能优化—my.cnf配置说明详解
MYSQL服务器my.cnf配置文档详解硬件:内存16G [client]port = 3306socket = /data/3306/mysql.sock [mysql]no-auto-rehash ...
- Maven 打包涉及证书文件问题
当使用maven-assembly-plugin或者maven-shade-plugin打包时,如果涉及到证书文件,一定设置过滤,否则证书文件会被做修改.报异常: java.io.IOExceptio ...
- mysql-6 数据检索(4)
汇总数据 函数 说明 AVG() 返回某列的平均数 COUNT() 返回某列的行数 MAX() 返回某列的最大值 MIN() 返回某列的最小值 SUM() 返回某列值的和 1.AVG函数 SELECT ...
- 网页实时聊天之js和jQuery实现ajax长轮询
众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息. 一直以来的方式 ...
- Linux系统管理命令之用户管理
1.添加用户useradd 2.删除用户userdel userdel aming 彻底删除用户(包括删除用户目录) userdel -r aming 3.用户修改usermod
- android 判断字符串是否为空与比对["=="与equals()的区别]
if (s == null || s.equals("")) ; } s.equals("")里面是要比对的字符串 声明字符串未赋初始值或值,然后比对就会出错, ...
- Struts2文件上传,以及各种注意事项
首先肯定是要配置好struts2环境,这个在另一篇<struts2环境搭建,以及一个简单实例>里已经讲过了 首先是网页部分,upload_file.jsp <%@ page lang ...