arrayBuffer的XMLHttpRequest响应文本,unicode U+FFFD

XMLHttpRequest responseText to arrayBuffer, unicode U+FFFD

本文关键字:unicode U+FFFD 文本 响应 XMLHttpRequest arrayBuffer      更新时间:2023-09-26

调用的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强制转换为String时,数据是否丢失?

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

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

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


简而言之,

1) 当数据被Javascript强制转换为String时,数据是否丢失?

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

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

严格来说,数据是不安全的。

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

此外,这在性能上也不是一个好主意。