• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP实现GB2312字符与区位码的相互转换的代码
    研究编码,得知GB2312编码与区位码的关系,尝试之后,得此程序。
    搜索,似乎没人写,故发此地。
    原创首发:
    http://bbs.blueidea.com
    http://mytju.com/classcode/
    任意转载,任意使用。
    1.简述
    (1)GB2312标准的定义,其实就是区位码。
    共94行,94列,行就是区号,列就是位号。
    如“啊”字区号为16,位号为01,它的区位码就是1601。
    (2)每个字符由区号+位号组成,共占两个字节。
    每个字节都是01-94,与通信控制符0-31冲突,
    所以,将区号和位号分别加上32,以避免冲突。
    (3)由上,每个字节是33-126,与ASCII编码0-127冲突,
    所以将最高位置为1,也就是加上128,以避免冲突。
    所以,最终,每个字节为161-254。
    2。实现
    原理很简单,加加减减即可实现。
    直接将我完成的函数帖于此处。

    复制代码 代码如下:

    '----取得区位码的函数--------------------- 
    Function CharToQWM(byVal str) 
        dim sHex,sHigh,sLow,iLow,iHigh,sResult 
        sHex=Hex(Asc(str)) '取得字符的内码的编码,如B0A1,此编码是正确的顺序,不必交换高低位。 
        sHigh=Left(sHex,2) '取得编码的高位,如B0。 
        sLow=Right(sHex,2) '取得编码的低位,如A1。 
        'GB2312内码范围为HA1A1--HFEFE,每个字节都在A1-FE之间。 
        if NOT (sHigh>="A1" AND sHigh="FE") then 
            CharToQWM="" 
            Exit Function 
        end if 
        if NOT (sLow>="A1" AND sLow="FE") then 
            CharToQWM="" 
            Exit Function 
        end if 
        'GB交换码仅使用了7位,高位置1,即为内码。反过来就是将高位置0,可得到交换码。 
        iLow=Clng("H"  sLow)-128  
        iHigh=Clng("H"  sHigh)-128 
        '区位码与控制码0-31冲突,所以加上32之后,即是交换码。反过来减去32即可。 
        iLow=iLow-32 
        iHigh=iHigh-32 
        'OK,区位码已经得到。 
        sResult="" 
        if iHigh10 then 
            sResult = sResult  "0"  Cstr(iHigh) 
        else 
            sResult = sResult  Cstr(iHigh) 
        end if 
        if iLow10 then 
            sResult = sResult  "0"  Cstr(iLow) 
        else 
            sResult = sResult  Cstr(iLow) 
        end if 
        CharToQWM=sResult 
    End Function 
    '----根据区位码得到字符的函数--------------------- 
    Function QWMToChar(byVal str,byVal doCheckFlg) 
        dim sHex,sHigh,sLow,iLow,iHigh,sResult 
        '-------------检查输入格式-------------- 
        if doCheckFlg then 
            if Len(str)>4 then 
                QWMToChar="" 
                Exit Function 
            end if 
            '--4位必须都是数字 
            dim i,iAsc 
            for i=1 to 4 
                iAsc=Asc(mid(str,i,1)) 
                if NOT (iAsc>=H30 AND iAsc=H39) then 
                    QWMToChar="" 
                    Exit Function 
                end if 
            next 
            '--区号,位号都要在01-94之间 
            iHigh=Clng(Left(str,2)) 
            iLow=Clng(Right(str,2)) 
            if NOT (iHigh>=1 AND iHigh=94) then 
                QWMToChar="" 
                Exit Function 
            end if 
            if NOT (iLow>=1 AND iLow=94) then 
                QWMToChar="" 
                Exit Function 
            end if 
        end if 
        '-------------检查完毕------------------ 
        iHigh=Clng(Left(str,2)) 
        iLow=Clng(Right(str,2)) 
        iHigh=iHigh + 32 + 128 
        iLow=iLow + 32 + 128 
        sHex=Hex(iHigh)  Hex(iLow) 
        QWMToChar=Chr("H"  sHex) 
    End Function 

    使用方法:
    -----------------------------------------------------------------------------------------------------
    复制代码 代码如下:

    dim i,str,sChar 
    str="娃哈哈" 
    for i=1 to Len(str) 
           sChar=Mid(str,i,1)  
           Response.write sChar  ":"  CharToQWM(sChar) "br>" 
    next 
    ----------------------------------------------------------------------------------------------------- 
    dim str 
    str="1601|1602|1603} 
    if instr(str,"|")>0 then 
           dim s,sCharArray,i 
           sCharArray=Split(str,"|") 
           for i=0 to Ubound(sCharArray) 
                  s=s  QWMToChar(trim(sCharArray(i)),True) 
           next 
           str=s 
    else 
           str=QWMToChar(str,True) 
    end if 
    .......
    -----------------------------------------------------------------------------------------------------
    3.在线使用
    http://www.mytju.com/classcode/tools/quweima.asp
    进入以上网址即可在线查阅。
    您可能感兴趣的文章:
    • PHP中实现汉字转区位码应用源码实例解析
    上一篇:解决用Access数据库建站维护不便的问题的方法
    下一篇:对于ASP编码问题的深入研究与最终解决方案
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ASP实现GB2312字符与区位码的相互转换的代码 ASP,实现,GB2312,字符,与,区位码,