JavaScript中,我通过NFKC使用String.prototype.normalize规范化将全角规范为标准ASCII半角字符。

'1'.normalize('NFKC') === '1'
> true


但是,查看像૫ which is the digit 5 in Gujarati这样更晦涩的数字并不能正常化。

'૫'.normalize('NFKC') === '5'
> false


我想念什么?

最佳答案

Unicode规范化是针对彼此不同的字符,而不是针对可能具有相似含义的每组字符。

字符“ 1”(全角数字一)本质上只是字符“ 1”(数字一角),其样式略有不同,如果不需要兼容性,则无需进行编码。在某些情况下,它们是完全可互换的,因此将前者分配给后者的分解映射。字符“ ૫”(GUJARATI DIGIT FIVE)没有分解映射,因为它不是任何其他字符的变体;这是它自己独特的东西。

您可以查询Unicode字符数据库,以查看哪些字符分解,哪些(即大多数)不分解。例如,指向作为问题一部分发布的工具的链接向您显示૫在任何形式的Unicode规范化下都不会改变。

09-07 08:57