当前位置:首页 » 程序代码 » 正文

VB编程:获取汉字的区位码 (汉字转区位码 源码)

用编程方式获得某个汉字的区位码,或由某个区位码推算出汉字,在网上有好心人写出了相应的函数,在这里我提供出来:

Function QuWei(ByVal x As String) As String '获得某汉字或字符对应的的区位码
    If Asc(x) >= 0 Then Exit Function
    x = Hex(Asc(x))
    QuWei = Format(CDec("&H" & Left(x, 2)) - 160, "00") & Format(CDec("&H" & Right(x, 2)) - 160, "00")
End Function

Function HanZi(ByVal x As String) As String '获得某区位码对应汉字或字符
    HanZi = Chr("&H" & Hex(Val(Left(x, 2)) + 160) & Hex(Val(Right(x, 2)) + 160))
End Function

在这里我也说一下这两个函数的运用。

直接运用很简单:
汉字转区位码:
Msgbox QuWei("啊")     输出结果是:1601

区位码转汉字:
Msgbox HanZi("1601")   输出结果是:啊

--------------------------------------------

在区位码中,01到09区为682个特殊字符,16到87区为汉字区,包含6763个汉字,
一级汉字从1601-1694,1701-1794,.....5401-5494,5501-5589,共94*40-5=3755 个汉字
二级汉字从5601-5694,5701-5794,.....8601-8694,8701-8794,共94*32=3008 个汉字

根据上面的信息,我们可以根据上述的函数,来求出某个汉字的区位,再来分解GB汉字或非GB汉字。
例如,有字符串"大家喆早上镕好",其中“喆”“镕”两个是GBK汉字,用QuWei这个函数可以把喆镕两个字GBK汉字分解出来。

在窗体画一个按钮,点击事件输入以下代码
Private Sub Command1_Click()
Dim strA As String
Dim strB As String
Dim strC As String

strA = "大家喆早上镕好"

Dim strZJ As String
For i = 1 To Len(strA)
   strZJ = Mid(strA, i, 1)
   If Val(QuWei(strZJ)) >= 1601 And Val(QuWei(strZJ)) <= 8794 Then strB = strB & strZJ Else strC = strC & strZJ
Next

MsgBox strB
MsgBox strC

End Sub

运行上述代码,会输出“大家早上好”,随后再输出“喆镕”,成功把GB2312字符集中的汉字和字符集外的汉字区分开来。

打赏 支付宝打赏 微信打赏

来源:济亨网

本文链接:https://wb98.com/post/21.html

    << 上一篇 下一篇 >>

    湘公网安备 43011102000514号 - 湘ICP备08100508号