Javascript Firefox和Chromium之间的UINT8数组到字符串转换差异

Javascript Firefox和Chromium之间的UINT8数组到字符串转换差异,javascript,google-chrome,firefox,uint8array,Javascript,Google Chrome,Firefox,Uint8array,我正在尝试将二进制数据转换为如下字符串: var string=新的文本解码器(“utf-8”).decode(Uint8Array.from([1,2,3]) 当我在Firefox中查找string返回的变量时,它会显示预期的字符串“\u0001\u0002\u0003” 尽管我在Chrome中也这样做,string返回一个空字符串“” 有人能解释一下发生了什么事吗?Chrome控制台呈现不可打印字符的方式与firefox不同。具体来说,不可打印的字符被渲染为空方块。尽管如此,字符串还是由正确

我正在尝试将二进制数据转换为如下字符串:

var string=新的文本解码器(“utf-8”).decode(Uint8Array.from([1,2,3])

当我在Firefox中查找
string
返回的变量时,它会显示预期的字符串
“\u0001\u0002\u0003”

尽管我在Chrome中也这样做,
string
返回一个空字符串
“”


有人能解释一下发生了什么事吗?

Chrome控制台呈现不可打印字符的方式与firefox不同。具体来说,不可打印的字符被渲染为空方块。尽管如此,字符串还是由正确的unicode代码点组成

下面的一行(井…)创建
\u…
渲染

Array.from(
    {length: string.length}
  , (v, k) => k
)
   .map ( idx => `\\u${string.codePointAt(idx).toString(16).padStart(4, '0')}`)
   .join()
;
测试它:

let string=新的文本解码器(“utf-8”).decode(Uint8Array.from([1,2,3]);
log(`raw rep:'${string}.`);
log(`code point rep:'${Array.from(
{length:string.length}
,(v,k)=>k.map(idx=>`\\u${string.codePointAt(idx).toString(16).padStart(4,'0')}`

).join(“”}.`)Chrome尝试在控制台中“显示”输出字符串中的值。在chrome中尝试
JSON.stringify(新的TextDecoder(“utf-8”).decode(Uint8Array.from([1,2,3]))
。在chrome 67上,我得到一个由3个无法打印的字符组成的字符串,呈现为空方块。字符串由适当的unocode代码点组成,如
Array.from({length:string.length},(v,k)=>k.map(idx=>string.codePointAt(idx))