栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript在字符串和ArrayBuffers之间转换

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript在字符串和ArrayBuffers之间转换

更新 -五年来,规范中现在有了新方法(请参阅下面的支持),可以使用正确的编码在字符串和类型数组之间进行转换。

TextEnprer

TextEnprer
代表:

TextEnprer
接口表示用于特定方法的编码器,即特定的字符编码,例如
utf-8
iso-8859-2
koi8

cp1261
gbk
,…
编码器将代码点流作为输入,并发出字节流。

由于上述内容而编写的变更说明:( 同上)

注意:Firefox,Chrome和Opera曾经支持utf-8以外的其他编码类型(例如utf-16,iso-8859-2,koi8,cp1261和gbk)。自Firefox
48,Chrome 54和Opera 41起,为了符合规范,除utf-8以外没有其他可用的编码类型。

创建的实例后,

TextEnprer
它将使用一个字符串并使用给定的编码参数对其进行编码:

if (!("TextEnprer" in window))  alert("Sorry, this browser does not support TextEnprer...");var enc = new TextEnprer(); // always utf-8console.log(enc.enpre("This is a string converted to a Uint8Array"));

然后,您当然可以在

.buffer
结果上使用参数,以根据
Uint8Array
需要将参考底图转换
ArrayBuffer
为其他视图。

只需确保字符串中的字符符合编码模式即可,例如,如果在示例中使用UTF-8范围以外的字符,它们将被编码为两个字节,而不是一个字节。

对于一般用途,您可以将UTF-16编码用于

localStorage

文字解码器

同样,相反的过程使用

TextDeprer

TextDeprer
接口表示为具体的方法,即一个特定的字符编码,如解码器
utf-8
iso-8859-2
koi8

cp1261
gbk
,…的解码器需要一个字节流作为输入,并且发射的码点流。

if (!("TextDeprer" in window))  alert("Sorry, this browser does not support TextDeprer...");var enc = new TextDeprer("utf-8");var arr = new Uint8Array([84,104,105,115,32,105,115,32,97,32,85,105,110,116,    56,65,114,114,97,121,32,99,111,110,118,101,114,116,    101,100,32,116,111,32,97,32,115,116,114,105,110,103]);console.log(enc.depre(arr));

MDN StringView库

一种替代方法是使用该

StringView
库(许可为lgpl-3.0),其目标是:

  • 基于Javascript ArrayBuffer接口为字符串(即,字符代码数组—
    Javascript中的ArrayBufferView)创建类似C的接口
  • 创建一个高度可扩展的库,任何人都可以通过向对象StringView.prototype添加方法来扩展
    *为此类类似字符串的对象创建方法的集合(从现在开始:stringViews),这些对象严格地用于数字数组,而不是创建新的不可变Javascript字符串
  • 与Javascript的默认UTF-16 DOMStrings以外的Unipre编码一起使用

提供更大的灵活性。但是,当

TextEnprer
/
TextDeprer
在现代浏览器中内置时,要求我们链接或嵌入该库。

支持

截至2018年7月:

TextEnprer
(实验,按标准进行)

 Chrome    | Edge      | Firefox   | IE        | Opera     | Safari ----------|-----------|-----------|-----------|-----------|-----------     38    |     ?     |    19°    |     -     |     25    |     - Chrome/A  | Edge/mob  | Firefox/A | Opera/A   |Safari/iOS | Webview/A ----------|-----------|-----------|-----------|-----------|-----------     38    |     ?     |    19°    |     ?     |     -     |     38°) 18: Firefox 18 implemented an earlier and slightly different versionof the specification.WEB WORKER SUPPORT:Experimental, On Standard Track Chrome    | Edge      | Firefox   | IE        | Opera     | Safari ----------|-----------|-----------|-----------|-----------|-----------     38    |     ?     |     20    |     -     |     25    |     - Chrome/A  | Edge/mob  | Firefox/A | Opera/A   |Safari/iOS | Webview/A ----------|-----------|-----------|-----------|-----------|-----------     38    |     ?     |     20    |     ?     |     -     |     38Data from MDN - `npm i -g mdncomp` by epistemex


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456663.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号