加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

使用ASP可以编写程序以实现 GB2312 到编码之间的互相转化

发布时间:2023-09-14 15:16:20 所属栏目:Asp教程 来源:
导读:研究编码,得知GB2312编码与区位码的关系,尝试之后,得此程序。

搜索,似乎没人写,故发此地。

任意转载,任意使用。

1.简述

(1)GB2312标准的定义,其实就是区位码。

共94行,94列,行就是区号
研究编码,得知GB2312编码与区位码的关系,尝试之后,得此程序。
 
搜索,似乎没人写,故发此地。

任意转载,任意使用。
 
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 iHigh<10 then
 
        sResult = sResult & "0" & Cstr(iHigh)
 
    else
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章