XMLHttpRequest responseText到arrayBuffer,unicode U + FFFD

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XMLHttpRequest responseText到arrayBuffer,unicode U + FFFD相关的知识,希望对你有一定的参考价值。

呼叫的responseText充满了替换unicode字符(U + FFFD) 。我无法将responseType设置为arraybuffer。 Answer where responseType can be set as 'arraybuffer'

有没有办法恢复已经转换为String的原始二进制文件(原始数据)?

console.log(xhr.responseText);                // 'at�'
console.log(xhr.responseText.codePointAt(0)); // '97'
console.log(xhr.responseText.codePointAt(1)); // '116'
console.log(xhr.responseText.codePointAt(2)); // '65533'

1)通过javascript将数据转换为String时数据是否丢失?

要么

2)数据是否像String一样安全,但我还没有找到正确的方法将其解码为二进制/十六进制/十进制? (在这种情况下,数据很好但是在打印时它只显示替换字符。)

答案

我很难处理同样的问题。我不知道正确的解决方案,但有一件事我肯定知道,当你拥有那个 ufffd字符时,你的数据就会消失,你无法发现它是什么,你应该在这之前解决问题。 ...我还使用wireshark来检查我实际收到的数据,并且收到的数据是正确的,所以问题可能发生在XMLHttpRequest对象周围!

另一答案

这似乎是同样的问题,我回答:https://stackoverflow.com/a/52110487/7354469


简而言之,

1)通过Javascript将数据转换为String时数据是否丢失?

不仅是javascript,很多Text Decoder都会导致数据丢失。

2)数据是否像String一样安全,但我还没有找到正确的方法将其解码为二进制/十六进制/十进制? (在这种情况下,数据很好但是在打印时它只显示替换字符。)

严格来说,数据并不安全。

但你可以绕过一些技巧。 (请参阅上面我已回答的链接。)

此外,它在性能上并不是一个好主意。

以上是关于XMLHttpRequest responseText到arrayBuffer,unicode U + FFFD的主要内容,如果未能解决你的问题,请参考以下文章

Ajax步骤

一文详解 Websocket 的前世今生

02AJAX XMLHttpRequest对象

访问 XMLHttpRequest 时访问 XMLHttpRequest 已被 CORS 策略阻止

XMLHttpRequest 封装

XMLHttpRequest 对象