同一个汉字竟有不同编码 - 程序中汉字比较的坑

1 背景

部分汉字 存在 兼容表意文字 问题,同一字源中不同写法的汉字,在Mac上看起来一样,实际上编码不同。
比如在Python中运行如下代码:

print("⼈" == "人")

结果竟然是False
为什么呢,因为这其实是两个不同的字,但是在mac上会显示的一模一样。
我们去查字符集编码会发现是两个不同的编码:

编码1.png
编码2.png

字符集查询地址:

https://www.qqxiuzi.cn/bianma/zifuji.php

2 解决方案

在代码中比较时,会出现比较失败的情况,
没什么好办法,这种case全都替换掉:

return str.replace("⼈", "人")
                .replace("⽣", "生")
                .replace("⼩", "小")
                .replace("⽟", "玉")
                .replace("⼤", "大")
                .replace("⽉", "月")
                .replace("⽜", "牛")
                .replace("⾼", "高")
                .replace("⼉", "儿")
                .replace("⼆", "二")
                .replace("⾦", "金")
                .replace("⽂", "文")
                .replace("⼭", "山")
                .replace("⾹", "香")
                .replace("⾉", "艮")
                .replace("⽴", "立")
                .replace("⼋", "八")
                .replace("⽥", "田")
                .replace("⽕", "火")
                .replace("⼦", "子");

3 参考文献:

Unicode字符兼容性问题,一样汉字为何有不同编码:

https://www.cnblogs.com/isakovsky/p/16287906.html

请勿使用“兼容表意文字区”的汉字:

https://www.qqxiuzi.cn/wz/zixun/1717.htm

这里有个更全的字典:

https://blog.hawkhai.com/blog/2021/03/14/Equivalent-Unified-Ideograph

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容