呼叫的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时数据是否会丢失?
OR
2)数据是否像String一样安全,但我还没有找到正确的方法将其解码为二进制/十六进制/十进制? (在这种情况下,数据很好但是在打印时它只显示替换字符。)
答案 0 :(得分:0)
我很难处理同样的问题。我不知道正确的解决方案,但有一点我肯定知道,当你拥有那个\ ufffd字符时,你的数据就消失了,你无法发现它是什么,你应该在发生之前解决问题。 ...我也使用wireshark来检查我实际收到的数据,并且收到的数据是正确的,所以问题可能发生在XMLHttpRequest对象的某处!!
答案 1 :(得分:0)
似乎是同样的问题,我回答:https://stackoverflow.com/a/52110487/7354469
简而言之,
1)当数据被Javascript转换为String时,数据会丢失吗?
不仅JavaScript,很多
Text Decoder
都会导致数据丢失。
2)数据作为字符串是否安全,但是我只是没有找到将其解码为二进制/十六进制/十进制的正确方法? (因为数据很好,但是在打印时只显示替换字符。)
严格来说,数据并不安全。
但是您可以绕开一些技巧。 (请参考上面我回答的链接。)
此外,在性能方面也不是一个好主意。