XMLHttpRequest responseText到arrayBuffer,unicode U + FFFD

时间:2015-06-26 18:56:34

标签: javascript unicode xmlhttprequest

呼叫的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一样安全,但我还没有找到正确的方法将其解码为二进制/十六进制/十进制? (在这种情况下,数据很好但是在打印时它只显示替换字符。)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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


简而言之,

1)当数据被Javascript转换为String时,数据会丢失吗?

  

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

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

  

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

     

但是您可以绕开一些技巧。   (请参考上面我回答的链接。)

     

此外,在性能方面也不是一个好主意。