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))代码>