0

我试图从 utf16 数组中获取缓冲区,因为 utf8 数组对字符串失败,因为它包含的特殊字符的代码值类似于 8211 或更大的值。

  let str = "–ello"
  let u16Array = new Uint16Array(str.split('').map(function (char) {
    return char.charCodeAt(0);
  }));
  let u8Array = new Uint8Array(str.split('').map(function (char) {
    return char.charCodeAt(0);
  }));

u16Array 看起来像 =>Uint16Array(5) [8211, 101, 108, 108, 111]

u8Array 看起来像 =>Uint8Array(5) [19, 101, 108, 108, 111]

因此,当我尝试从 u16Array 创建缓冲区数组时,即使我传递了用于编码的参数,我也会得到与 u8Array 相同的缓冲区数组作为输入

var bz16 = Buffer.from(u16Array, 'utf16le')
var bz8 = Buffer.from(u8Array)

bz16 和 bz8 的结果与

缓冲器 (5) [19, 101, 108, 108, 111]

因为我想在创建时将 Uint16Array 存储到缓冲区中

4

0 回答 0