Skip to content

JavaScript Unicode 归一化

Published: at 10:42

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

'' === '' // false

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

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

如何解决

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

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

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

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

''.normalize('NFKC') === '' // true