你看到的“⼀”不是真正的“一”
'⼀' === '一' // false
转Unicode之后: ⼀:\u2f00 一:\u4e00
发现两个一的Unicode是不一样的,这两个字符分别为部首「U+2F00 ⼀」和汉字「U+4E00 一」,也就是说前者是符号,后者是汉字,具体可参阅为什么在字库里存在一些「长得一样」的文字? - 知乎。
如何解决
可以使用String对象下的normalize
函数,normalize
参数有四种
- NFC:正则分解,然后进行正则构成
- NFD:仅正则分解
- NFKC:兼容性分解,然后进行规范性组成
- NFKD:兼容性分解
返回值:含有给定字符串的 Unicode 规范化形式的字符串。
具体可参阅String.prototype.normalize() - 前端 | MDN
可使用如下方法将符号转义为正常的汉字
'⼀'.normalize('NFKC') === '一' // true