javascript - 如何将 Javascript 对象转换为 ArrayBuffer?
问题描述
我使用 AJAX 从服务器检索编码字符串(使用TextEncoder
into ,在发送到服务器之前已被字符串化)。UTF-8
我在检索时解析它并得到一个Object
. 我需要将其转换Object
为解码的字符串。TextDecoder
似乎有decode
方法,但它期望ArrayBuffer
or 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 上搜索一天后,我有点卡住了,无法找到解决方案。我愿意接受任何允许我将“包含国际字符的字符串”保存到服务器并“按原样检索它们”的解决方案,除了更改内容类型,因为这些字符串捆绑在携带音频、视频和文件。非常感谢任何帮助或建议。
解决方案
推荐阅读
- javascript - 康威人生游戏规则
- python - Pyqt5 QgraphicsView 平移超过滚动条限制
- c# - 无法将类型“对象”隐式转换为“Microsoft.Office.Interop.Excel.Worksheet”
- variables - 如何处理密码中的引号。PowerShell foreach 循环
- java - 以相同的方式解析文件和命令行选项
- extjs - 当我们单击网格列即单击网格列时,自定义日期排序不起作用
- reactjs - 将主题合并到 react-minimal-pie-chart 中不起作用
- django - 未找到 gunicorn 静态文件
- javascript - 为什么我的 3D 模型没有使用 glTF 加载器在 three.js 中加载?
- xsl-fo - XSL-FO 到 PDF 的翻译产生了意想不到的结果