Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TextEncoder和TextDecoder不是完美的反比_Javascript_String_Character Encoding - Fatal编程技术网

Javascript TextEncoder和TextDecoder不是完美的反比

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

我收到了关于编码字符串的上一个问题的回复。我提出这个问题的希望是得到某种可逆的方式,在字符串和它作为字节数组的表示之间进行转换,就像在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 = 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
。为什么这可能是重复的?