javascript - Firefox 和 Chromium 之间的 Uint8Array 到字符串转换差异

标签 javascript google-chrome firefox uint8array

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

var string = new TextDecoder("utf-8").decode(Uint8Array.from([1, 2, 3]));

当我在 Firefox 中查找变量 string 返回的内容时,它显示了预期的字符串 "\u0001\u0002\u0003"

尽管当我在 Chrome 中执行相同操作时,string 返回一个空字符串 ""

有人可以解释一下这是怎么回事吗?

最佳答案

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

下面的一行代码(嗯...)创建了 \u... 渲染。

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

测试一下:

let string = new TextDecoder("utf-8").decode(Uint8Array.from([1, 2, 3]));

console.log(`raw rep: '${string}'.`);
console.log(`code point rep: '${Array.from(
    {length: string.length}
  , (v, k) => k).map ( idx => `\\u${string.codePointAt(idx).toString(16).padStart(4, '0')}` 
).join("")}'.`);

关于javascript - Firefox 和 Chromium 之间的 Uint8Array 到字符串转换差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51422220/

相关文章:

javascript - 将 div 从一个类包装到另一个类

javascript - 替换并着色 console.log() 中的参数

css - 浏览器在同一属性上加载带有 px 的速记 CSS 和带有 rem 的特定 css?

javascript - 如何让 window.showmodaldialog 在 chrome 37 中工作?

JavaScript print() 不带 URL 和日期

javascript - 如何在移动 View jquery中调整div

javascript - 使用js设计 Accordion 菜单,但只想一次只打开一个 Accordion 选项卡

firefox - Greasemonkey 脚本与 Firefox、Safari、Opera 和 chrome 的兼容性(onload 事件)

css - 为什么表情符号在旋转到 45(或 315)度时不会呈现?

javascript - Firefox 插件 : How to fire event when page load *starts*?