MOXUY

Apr 21, 2023

JavaScript Unicode 归一化

你看到的“⼀”不是真正的“一”

1
'⼀' === '一' // false

转Unicode之后:
⼀:\u2f00
一:\u4e00

发现两个一的Unicode是不一样的,这两个字符分别为部首「U+2F00 ⼀」和汉字「U+4E00 一」,也就是说前者是符号,后者是汉字,具体可参阅为什么在字库里存在一些「长得一样」的文字? - 知乎

如何解决

可以使用String对象下的normalize函数,normalize参数有四种

  • NFC:正则分解,然后进行正则构成
  • NFD:仅正则分解
  • NFKC:兼容性分解,然后进行规范性组成
  • NFKD:兼容性分解

返回值:含有给定字符串的 Unicode 规范化形式的字符串。

具体可参阅String.prototype.normalize() - JavaScript | MDN

可使用如下方法将符号转义为正常的汉字

1
'⼀'.normalize('NFKC') === '一' // true
tags: JavaScript
OLDER > < NEWER