两万常⽤汉字的拼⾳+⾸字母缩写+unicode编码对照表最近做项⽬遇到⼀项需求,为了隐藏汉字,对医院名称使⽤⾸字母代替,对医⽣名称⽤拼⾳代替。
直接下载最终excel成果:
查阅了众多资料,对各种结果分析汇总并改造,最终总结如下:
1. 读出汉字的拼⾳⾸字母可通过Excel 公式实现;
2. 读出汉字的拼⾳实现⽅法,基本需要借助编程,但是⽬前⽹上流传最⼴的版本是⽐较⽼旧的版本,不仅编码覆盖不全,⽽且有错误的mapping。
3. 得到2万个常⽤的汉字并不容易,最终是通过程序按照unicode顺序逐⼀写出,才得到了汉字全集
4. VBA中⼗六进制和⼗进制互相转化的妙⽤
⾸先,VBA中,把unicode转为汉字:
Sub Unicode2HZ()
Sheets("Sheet1").Cells(1, 1) = ChrW$(CLng("&H" & "4E00"))
End Sub
其次,VBA中⼗进制与⼗六进制互相转化:
Sub m_Unicode2HZ2()
'⼗六进制转⼗进制
Sheets("编码对照表").Cells(1, 1) = WorksheetFunction.Hex2Dec("4E00")
Sheets("编码对照表").Cells(2, 1) = WorksheetFunction.Hex2Dec("9FA5")
'⼗进制转⼗六进制
Sheets("编码对照表").Cells(3, 1) = "'" & CStr(Hex(Sheets("编码对照表").Cells(1, 1).Value))
Sheets("编码对照表").Cells(4, 1) = "'" & CStr(Hex(Sheets("编码对照表").Cells(2, 1).Value))
End Sub
最后,VBA中通过unicode编码写出所有的汉字:
Sub getAllHanzi()
Dim i As Long
Dim low As Long
Dim high As Long
low = WorksheetFunction.Hex2Dec("4E00") - 1
high = WorksheetFunction.Hex2Dec("9FA5") + 1
i = low + 1
Do While i > low And i < high
Sheets("编码对照表").Cells(i - 19967, 1) = i
Sheets("编码对照表").Cells(i - 19967, 2) = "'" & CStr(Hex(i))
Sheets("编码对照表").Cells(i - 19967, 3) = ChrW$(CLng("&H" & Sheets("编码对照表").Cells(i - 19967, 2).Value))
i = i + 1
Loop
End Sub
最后的⼏个标签页的结果分别如图:
unicode汉字取汉字⾸字母:根据Excel公式⽣成
取汉字拼⾳:根据VBA中的代码⽣成,不太全
编码对照表:⽐较全的对照表,但没有⽤来更新“取汉字拼⾳”后台逻辑的vba程序,仅作研究,为⼤家提供便利。由于含有宏,⽂件格式为xlsm,需要启⽤宏各功能才可⽤。
已经上传到CSDN论坛,名称为“汉字编码拼⾳对照表.xlsm”
直接下载最终excel成果:
⼀个unicode和拼⾳的对照表,dat⽂件,可以⽤notepad++打开
unicode 的汉字编码范围:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论