仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 630|回复: 8
打印 上一主题 下一主题

[学习教程] ASP教程之GB与BIG5内码转换COM原代码

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:56:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。转换这个COM用到了一个VC的资本文件。就是字典。
人人能够往61.134.75.70/download/gb2big5.zip下载

原代码以下:

//////////////////////////////////////////
中文称号:GB与BIG5内码交换控件
英文称号:GB2BIG5
Blood
版本:1.0
制造工夫:2002.3.5
版权一切Blood2002-2003
//////////////////////////////////////////

OptionExplicit

界说变量
DimBIG5DataAsVariant
DimGBDataAsVariant

界说自界说范例,用来处置编码的上下字成绩
TypeChineseTypeA
loCharAsByte
hiCharAsByte
EndType

PrivateBIG5Type(&HA1To&HFF,&H40To&HFE)AsChineseTypeA对应于BIG5字库
PrivateGBType(&HA7To&HFF,&HA1To&HFE)AsChineseTypeA对应与GB字库

//////////////////
大众函数入手下手
//////////////////

BIG5转换到GB的函数

FunctionBIG5TOGB(strSourceAsString)AsString
DimIAsLong,YAsLong
界说数组,用来寄存BIG5和GB内码数据
DimbteBIG5()AsByte
DimbteGB()AsByte

假如输出的内容为空,则加入函数
IfstrSource=""Then
BIG5TOGB=""
ExitFunction
EndIf

将BIG5数组的范例从Unicode编码转换为体系缺省码
bteBIG5=StrConv(strSource,vbFromUnicode)
断定BIG5数组的下标,用来轮回将一切的BIG5内容转换为GB内码
Y=UBound(bteBIG5)
ReDimbteGB(0ToY)
ForI=0ToY
IfI=YThen
bteGB(I)=bteBIG5(I)
ExitFor
EndIf
IfbteBIG5(I)<&HA1OrbteBIG5(I+1)<&H40Then
bteGB(I)=bteBIG5(I)
Else
bteGB(I)=BIG5Type(bteBIG5(I),bteBIG5(I+1)).loChar
bteGB(I+1)=BIG5Type(bteBIG5(I),bteBIG5(I+1)).hiChar
I=I+1
EndIf
NextI
将体系缺省码转换为Unicode编码
BIG5TOGB=StrConv(bteGB,vbUnicode)
从头初始化GB数组,以开释内存
ErasebteGB
EndFunction

GB转换到BIG5的函数

FunctionGBTOBIG5(strSourceAsString)AsString
DimIAsLong,YAsLong
界说数组,用来寄存BIG5和GB内码数据
DimbteGB()AsByte
DimbteBIG5()AsByte

假如输出的内容为空,则加入函数
IfstrSource=""Then
GBTOBIG5=""
ExitFunction
EndIf

将GB数组的范例从Unicode编码转换为体系缺省码
bteGB=StrConv(strSource,vbFromUnicode)
断定GB数组的下标,用来轮回将一切的BIG5内容转换为GB内码
Y=UBound(bteGB)
ReDimbteBIG5(0ToY)

ForI=0ToY
IfI=YThen
bteBIG5(I)=bteGB(I)
ExitFor
EndIf
IfbteGB(I)<&HA1OrbteGB(I+1)<&HA1Then
bteBIG5(I)=bteGB(I)
Else
IfbteGB(I)<&HB0AndbteGB(I+1)>=&HA1Then
bteBIG5(I)=GBType(bteGB(I)+6,bteGB(I+1)).loChar
bteBIG5(I+1)=GBType(bteGB(I)+6,bteGB(I+1)).hiChar
Else
bteBIG5(I)=GBType(bteGB(I),bteGB(I+1)).loChar
bteBIG5(I+1)=GBType(bteGB(I),bteGB(I+1)).hiChar
EndIf
I=I+1
EndIf
NextI
将体系缺省码转换为Unicode编码
GBTOBIG5=StrConv(bteBIG5,vbUnicode)
从头初始化BIG5数组,以开释内存
ErasebteBIG5
EndFunction

//////////////////
大众函数停止
//////////////////

类初始化
PrivateSubClass_Initialize()
DimIAsLong
DimJAsLong
DimiLenAsLong

从资本文件中读取GB与BIG5的字库
GBData=LoadResData(102,"CUSTOM")//读取GB字库
BIG5Data=LoadResData(101,"CUSTOM")//读取BIG5字库

ForI=&HA1To&HFE
ForJ=&H40To&HFE
BIG5Type(I,J).loChar=BIG5Data(iLen)
BIG5Type(I,J).hiChar=BIG5Data(iLen+1)
iLen=iLen+2
NextJ
NextI

iLen=0

ForI=&HA7To&HFE
ForJ=&HA1To&HFE
GBType(I,J).loChar=GBData(iLen)
GBType(I,J).hiChar=GBData(iLen+1)
iLen=iLen+2
NextJ
NextI
EndSub

</p>ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊!
第二个灵魂 该用户已被删除
沙发
发表于 2015-1-20 06:17:10 来自手机 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
山那边是海 该用户已被删除
板凳
发表于 2015-1-27 05:05:36 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
冷月葬花魂 该用户已被删除
地板
 楼主| 发表于 2015-1-31 21:46:12 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
柔情似水 该用户已被删除
5#
发表于 2015-2-6 23:55:59 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
透明 该用户已被删除
6#
发表于 2015-2-19 03:46:01 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
小妖女 该用户已被删除
7#
发表于 2015-3-6 12:35:00 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
8#
发表于 2015-3-13 00:57:53 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
不帅 该用户已被删除
9#
发表于 2015-3-20 07:44:05 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 05:27

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表