【发布时间】:2019-02-01 21:49:39
【问题描述】:
当我解析这个时:
JSON.parse('"\\u1f469\\u200d\\u1f469\\u200d\\u1f466"')
我最终得到了多个字符:
996
但是当我解析这个时:
JSON.parse('"\\uD83D\\uDC69\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC69"')
它会产生 ????❤️??????。两者都在 chrome 上运行。第一个是有效的零宽度连接表情符号。为什么第一个不产生组合的表情符号字符?
【问题讨论】:
-
这是 JavaScript 中的一个已知限制,它不支持超过 2 个字节的多字节字符:这些字符需要使用代理对进行编码。
-
如果是Javascript的限制,这个网页怎么能正确显示字符:emojipedia.org/family-woman-woman-boy
-
你在哪里看到那个网站是通过 JS 做的?我所看到的只是 HTML 文档是 UTF 编码的,并且在没有任何 JS 参与的情况下,文档中的字符是硬编码的。该页面上较大的图像不是字符,而是图像。
-
注意:您的问题与
JSON.parse关系不大,因为JSON.parse('"\\uD83D\\uDC69"')与"\uD83D\uDC69"是同一个字符串。
标签: javascript json parsing