首页 > 解决方案 > 如何将 Javascript 对象转换为 ArrayBuffer?

问题描述

我使用 AJAX 从服务器检索编码字符串(使用TextEncoderinto ,在发送到服务器之前已被字符串化)。UTF-8我在检索时解析它并得到一个Object. 我需要将其转换Object为解码的字符串。TextDecoder似乎有decode方法,但它期望ArrayBufferor ArrayBufferView, not Object。如果我按原样使用我的对象,该方法会给出 TypeError:

var myStr = "This is a string, possibly with utf-8 or utf-16 chars.";
console.log("Original: " + myStr);

var encoded = new TextEncoder("UTF-16").encode(myStr);
console.log("Encoded: " + encoded);

var encStr = JSON.stringify(encoded);
console.log("Stringfied: " + encStr);

//---------- Send it to the server; store in db; retrieve it later ---------

var parsedObj = JSON.parse(encStr); // Returns an "Object"
console.log("Parsed: " + parsedObj);

// The following decode method expects ArrayBuffer or ArrayBufferView only
var decStr = new TextDecoder("UTF-16").decode(parsedObj); // TypeError

// Do something with the decoded string

这个 SO 6965107对转换字符串/ArrayBuffers 进行了广泛的讨论,但这些答案都不适用于我的情况。我也遇到了这篇文章,如果我有Object.

一些帖子建议使用“responseType:arraybuffer”,这会导致来自服务器的 ArrayBuffer 响应,但在检索此编码字符串时我不能使用它,因为同一结果数据中有许多其他项目需要不同的内容类型。

在谷歌和 SO 上搜索一天后,我有点卡住了,无法找到解决方案。我愿意接受任何允许我将“包含国际字符的字符串”保存到服务器并“按原样检索它们”的解决方案,除了更改内容类型,因为这些字符串捆绑在携带音频、视频和文件。非常感谢任何帮助或建议。

标签: javascriptencodingdecodingarraybuffertextdecoder

解决方案


推荐阅读