国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

ASP實現GB2312字符與區位碼的相互轉換的代碼

2024-05-04 11:01:38
字體:
來源:轉載
供稿:網友
研究編碼,得知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 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 益阳市| 云和县| 牡丹江市| 永清县| 石景山区| 大兴区| 澄城县| 苏尼特左旗| 伊川县| 青龙| 博野县| 湾仔区| 遵化市| 清苑县| 墨脱县| 宁南县| 桦南县| 建水县| 沂南县| 香港| 华安县| 苍南县| 江北区| 恩施市| 浑源县| 正定县| 通州市| 广水市| 西平县| 嫩江县| 晋江市| 浦东新区| 梁山县| 盐源县| 巩义市| 太湖县| 高台县| 徐州市| 徐州市| 翼城县| 景谷|