1 背景
部分汉字 存在 兼容表意文字 问题,同一字源中不同写法的汉字,在Mac上看起来一样,实际上编码不同。
比如在Python中运行如下代码:
print("⼈" == "人")
结果竟然是False
为什么呢,因为这其实是两个不同的字,但是在mac上会显示的一模一样。
我们去查字符集编码会发现是两个不同的编码:
字符集查询地址:
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://blog.hawkhai.com/blog/2021/03/14/Equivalent-Unified-Ideograph