javascript - 如何将角色转出基本多语言平面?

标签 javascript unicode non-english astral-plane

对于基本多语言平面中的字符,我们可以使用'\uxxxx'进行转义。例如,您可以使用/[\u4e00-\u9fff]/来匹配常用汉字(0x4e00-0x9fff 是中日韩统一表意文字的范围)。

但对于基本多语言平面之外的字符,其代码大于0xffff。所以你不能使用格式'\uxxxx'来转义它,因为'\u20000'表示字符'\u2000'和字符'0',而不是代码为0x20000的字符。

如何将字符转义出基本多语言平面?直接使用这些字符不是一个好主意,因为它们无法在大多数字体中显示。

最佳答案

Javascript 无法直接识别 BMP 之外的字符——它们在内部表示为 UTF-16 代理项对。例如,您提到的字符 U+20000(当前分配给“CJK Unified Ideographs Ext. B”)表示为代理项对 U+D840 U+DC00。作为 Javascript 字符串,这只是 "\u2840\uDC00"。 (请注意,该字符串的 s.length 为 2,即使它显示为单个字符。)

Wikipedia has details on the encoding scheme used.

关于javascript - 如何将角色转出基本多语言平面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13204412/

相关文章:

javascript - 接受 JavaScript 中的点和空格

javascript - 什么是实时模板或一般模板?它与 WordPress 中使用的模板有何不同

javascript for 循环 - 如何获取 [i] 之前的文本

javascript - Thumbs_up Gem,ajax 的一个小问题

python - 我不能在 EMAIL_PASSWORD 中使用 Unicode 字符和 django

scala - 如何将 IDEA 配置为自动将 => 替换为 ⇒ 和 -> 替换为 →?

python - 在 Python 中检测非英文字符的字符串

HTML unicode 箭头适用于 Safari 桌面,但不适用于 iOS 的 Safari

.net - 非英文成员(member)名称是否应改为英文?

iphone - 非英语语言的推送通知