奇怪的unicode符号,不能parseInt,得到NaN

时间:2018-02-06 20:59:22

标签: javascript unicode

此处与此主题类似 - Array of html entities "" how to print? as unicode (not working)?

我有一个HTML实体数组(自定义字体),如下所示:

const arr = ['crop_16_9', 'computer', '3d_rotation', ''];

我唯一可以成功打印的是

render() {
    return <span> String.fromCodePoint(parseInt(arr[0].replace(/&#x|;/g,''),16)) </span>
}

然而其他人会抛出这样的错误:

parseInt是NaN SOME_NUMBER_HERE超出String.fromCodePoint

的范围

还有String.fromCodePoint和parseInt吗?

1 个答案:

答案 0 :(得分:1)

当然,正确的解决方案是不生成包含HTML实体的JS字符串文字 - JS确实直接支持unicode - 但如果你坚持这里是如何做的。

您当前的尝试似乎仅在整个字符串是单个实体时才有效,使用replace删除非整数部分然后获取单个字符代码。如果字符串包含普通字符和多个实体,这显然不起作用。在这种情况下,您需要用字符串中的unicode字符替换每个实体:

arr[0].replace(/&#x([0-9a-f]+);/gi, (_, code) => String.fromCodePoint(parseInt(code, 16)))