Javascript TextEncoder和TextDecoder不是完美的反比
我收到了关于编码字符串的上一个问题的回复。我提出这个问题的希望是得到某种可逆的方式,在字符串和它作为字节数组的表示之间进行转换,就像在Python3中一样 但是,我在一个特定的UINT8阵列上遇到了问题:Javascript TextEncoder和TextDecoder不是完美的反比,javascript,string,character-encoding,Javascript,String,Character Encoding,我收到了关于编码字符串的上一个问题的回复。我提出这个问题的希望是得到某种可逆的方式,在字符串和它作为字节数组的表示之间进行转换,就像在Python3中一样 但是,我在一个特定的UINT8阵列上遇到了问题: var encoder = new TextEncoder(); var decoder = new TextDecoder(encoder.encoding); var s = [248, 35, 45, 41, 178, 175, 190, 62, 134, 39]; var t = Ar
var encoder = new TextEncoder();
var decoder = new TextDecoder(encoder.encoding);
var s = [248, 35, 45, 41, 178, 175, 190, 62, 134, 39];
var t = Array.from(decoder.decode(encoder.encode(Uint8Array(s)));
我希望
t
的值是[248,35,45,41,178,175,190,62,134,39]
。相反,它是[23919118935,45,41239119118923911911892391189189239118962239118939]
。发布答案的人被暂停访问该网站,因此我无法通过评论他的答案来解决此问题。更改var t=Array.from(decoder.decode(encoder.encode(Uint8Array));
至var t=JSON.parse('['+decoder.decode(encoder.encode(新的Uint8Array))+']');
var编码器=新的textcoder();
var解码器=新的文本解码器(编码器编码);
var s=[248,35,45,41,178,175,190,62,134,39];
var t=JSON.parse('['+decoder.decode(encoder.encode(新的Uint8Array)))+']';
console.log(t);
s
未引用字符串,因此您的代码与您的问题不匹配。您没有尝试使用字符编码处理非文本数据,是吗?textcoder.encode
需要一个字符串(UTF-16代码单元序列),而不是Uint8Array
。可以像@artgb那样让代码正常工作,但存在一些模糊的强制操作,包括将数组转换为字符串以传递给textcoder.encode
。为什么这可能是重复的?