Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > asp技巧

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

来源:中文源码网    浏览:309 次    日期:2024-05-18 15:42:15
【下载文档:  asp实现GB2312字符与区位码的相互转换的代码.txt 】


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 iHigh<10 then sResult = sResult & "0" & Cstr(iHigh) else sResult = sResult & Cstr(iHigh) end if if iLow<10 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) &"
" 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 进入以上网址即可在线查阅。

相关内容