【发布时间】:2019-05-21 06:23:44
【问题描述】:
我正在处理原始字符串,其中包含 UTF 星体符号代理部分的转义序列。 (我想我说得对……)
console.log("\uD83D\uDCA9")
// => ????
让我们以上面的表情符号为例。如果我有代理对 (\uD83D\uDCA9) 我怎样才能反过来将它的十六进制值转换为 Javascript 的 String.fromCodePoint() 函数的有效参数?
我尝试了以下方法:
const codePoint = ["D83D", "DCA9"].reduce((acc, cur) => {
return acc += parseInt(cur, 16);
}, 0);
console.log(String.fromCodePoint(codePoint));
// => ???? (some weird symbol appears, not ????!)
PS:我熟悉 ES6 转义序列,它在括号 {...} 之间显示十六进制值,而不是使用代理一半。 但我需要使用代理对来做到这一点!
非常感谢任何建议。
【问题讨论】:
标签: javascript unicode hex unicode-escapes surrogate-pairs