javascript - 我们如何从 UTF-16 中用于表示非 BMP 字符的两个 16 位代码点到 Unicode 中字符的单个代码点?
问题描述
在 ES6 中,当我们codePointAt(0)
在其中包含一个字符 ('') 且其 Unicode 码位值大于 U+FFFF(因此不是基本多语言平面的一部分)的字符串上使用时,我们得到码位 134071。字符串实际上仍然有两个代码点,代表这个 134071 值。
> (55362).toString(16)
'd842'
> (57271).toString(16)
'dfb7'
> "\ud842\udfb7"
''
> const j = "\ud842\udfb7"
undefined
> j
''
> j.codePointAt(0)
134071
> j.codePointAt(1)
57271
>
我的问题是我们如何从 55362 和 57271 这两个码点到单个码点 134071。我这里说的是数学关系。
另外,为什么我们仍然可以访问位置 1 的代码点,但我们不能访问位置 0 的单个代码点?
解决方案
推荐阅读
- javascript - 如何用 d3.js 绘制凹多边形?
- c++ - 修复 C++ 中引用变量的输入问题
- python - 使用python获取位于父目录的子文件夹中的文件
- android - 无法发现 BLE 设备
- pip - 关于多个步骤,无法在 PC 上安装 Scrapy
- lua - 如何修复 NPC 脱离地图/分崩离析
- scala - Akka Http getFromFile 和 getFromDirectory 返回 404
- python - 无法从 TensorFlow 导入模块
- pdf - 当列表单元格中有多行时,PDF输出很丑
- reactjs - 无法通过在 REACT 中使用 Google 身份验证使用登录 ID 从 Firestore 读取数据。我的数据以当前使用的 ID 保存在 Firestore 中