问题描述
我使用AJAX从服务器检索了一个编码字符串(使用TextEncoder
到UTF-8
中,该字符串在发送到服务器之前已被字符串化)。我在检索时解析它并得到一个Object
。我需要将此Object
转换为解码后的字符串。 TextDecoder
似乎具有decode
方法,但是它期望ArrayBuffer
或ArrayBufferView
,而不是Object
。如果我按原样使用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的广泛讨论,但这些答案均不适用于我的情况。我还遇到了this条文章,如果我有Object
,则该文章不起作用。
Some posts建议使用“ responseType:arraybuffer”,这会导致服务器产生ArrayBuffer响应,但是在检索此编码字符串时我无法使用它,因为同一结果数据中还有许多其他项需要不同的内容类型。
在Google和SO上搜索了一天之后,我有点受阻,无法找到解决方案。我对任何允许我将“包含国际字符的字符串”保存到服务器并“按原样检索”的解决方案持开放态度,除了更改内容类型外,因为这些字符串捆绑在携带音频,视频和音频的JSON对象中,文件。任何帮助或建议都将受到高度赞赏。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)