将XMLHttpRequest的responseText转换为arrayBuffer,unicode U+FFFD。

5

调用的responseText充满了替换的Unicode字符(U + FFFD)�。我无法将responseType设置为arraybuffer。

答案,其中responseType可以设置为'arraybuffer'

有没有办法恢复已转换为字符串的原始二进制数据(原始数据)?

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将数据转换为字符串时,数据会丢失吗?

或者

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

2个回答

0

我在处理同类问题时遇到了很大的困难。我不知道正确的解决方案,但我确定一件事情,就是当你的数据出现那个\ufffd字符时,你的数据已经消失了,你无法发现它是什么 ,你一定要在出现这种情况之前解决这个问题。...我还使用Wireshark检查我实际接收到的数据,接收到的数据是正确的,所以问题可能发生在XMLHttpRequest对象的某个地方!


0

看起来是同样的问题,我已经回答了:https://dev59.com/QaPia4cB1Zd3GeqPvTxu#52110487


简而言之,
1)当数据被Javascript转换为字符串时,数据是否会丢失?
引用: 不仅仅是Javascript,很多“文本解码器”都可能导致数据丢失。
2)数据作为字符串是否安全,但我只是没有找到正确的方法将其解码为二进制/十六进制/十进制?(在这种情况下,数据是好的,但打印时只显示替换字符。)
引用: 严格来说,数据并不安全。 但是你可以通过一些技巧绕过它。 (请参考我之前回答的链接。) 此外,这对性能来说也不是一个好主意。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接