-
利用JS实现gb2312编码
2007-10-08 14:21:55
<script. language="javascript">
/***** This JavaScript. Writen By 51JS.COM-ZMM (2007-09-14) *****/
function URLEncode(vStr) {
var vGet = new String();
var gbData = [
'啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥',
'薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳',
'病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖',
'场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚',
'础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮',
'怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠',
'丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二',
'贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服',
'浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹',
'埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈',
'骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖',
'弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕',
'肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件',
'健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸',
'尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻',
'俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀',
'馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐',
'痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿',
'隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫',
'谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸',
'摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁',
'拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗',
'啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐',
'恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠',
'取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁',
'伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳',
'省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱',
'恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔',
'獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃',
'汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威',
'巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺',
'稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓',
'小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄',
'选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶',
'摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐',
'印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉',
'浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧',
'铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政',
'帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑',
'住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座',
'亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝',
'佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼',
'凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺',
'邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝',
'堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥',
'荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺',
'蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖',
'摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼',
'唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼',
'帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺',
'狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂',
'恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾',
'洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑',
'濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣',
'妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩',
'纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬',
'琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹',
'椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋',
'辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰',
'搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻',
'臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐',
'怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨',
'睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪',
'铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔',
'稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙',
'瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃',
'颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒',
'蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋',
'簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤',
'酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜',
'觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋',
'鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄'
];
for (var i = 0; i < vStr.length; i ++) {
var tmp = vStr.charAt(i);
var reg = /^[\u4e00-\u9fa5\uf900-\ufa2d]$/;
if (reg.test(tmp)) {
for (var area = 0; area < gbData.length; area ++) {
var place = gbData[area].indexOf(tmp) + 1;
if (place) {
area += 16;
vGet += '%' + getUCase((0xA0 + area).toString(16));
vGet += '%' + getUCase((0xA0 + place).toString(16));
break;
}
}
} else {
var vPos = '~!@#$%^&*()-_+={}[]|\\:;"\'<>,.?/`'.indexOf(tmp);
vGet += vPos != -1 ? '%' + getUCase(tmp.charCodeAt(0).toString(16)) : tmp;
}
}
return vGet.replace(/\s/g, '+');
function getUCase(v) { return v.toUpperCase(); }
}alert(URLEncode('你好世界! => Hello World!'));
</script> -
ASP的COM接口
2007-10-08 14:17:21
unit ASPTypeLibrary_TLB;
// S.G. ( ) 10.08.98 :
// Changed declaration of IResponse.Cookies from IDispatch to IWriteCookieDisp
// Changed declaration of IRequest.Cookies from IDispatch to IReadCookieDisp{ This file contains pascal declarations imported from a type library.
This file will be written during each import or refresh of the type
library editor. Changes to this file will be discarded during the
refresh process. }{ Microsoft Active Server Pages Object Library }
{ Version 2.0 }{ Conversion log:
Warning: 'Var' is a reserved word. Parameter 'Var' in IRequestDictionary.Item changed to 'Var_'
Warning: 'Var' is a reserved word. Parameter 'Var' in IReadCookie.Item changed to 'Var_'
Warning: 'End' is a reserved word. IResponse.End changed to End_
}interface
uses Windows, ActiveX, Classes, Graphics, OleCtrls, StdVCL;
const
LIBID_ASPTypeLibrary: TGUID = '{D97A6DA0-A85C-11CF-83AE-00A0C90C2BD8}';const
{ Component class GUIDs }
Class_Request: TGUID = '{920C25D0-25D9-11D0-A55F-00A0C90C2091}';
Class_Response: TGUID = '{46E19BA0-25DD-11D0-A55F-00A0C90C2091}';
Class_Session: TGUID = '{509F8F20-25DE-11D0-A55F-00A0C90C2091}';
Class_Application: TGUID = '{7C3BAF00-25DE-11D0-A55F-00A0C90C2091}';
Class_Server: TGUID = '{A506D160-25E0-11D0-A55F-00A0C90C2091}';
Class_ScriptingContext: TGUID = '{D97A6DA0-A868-11CF-83AE-11B0C90C2BD8}';
type{ Forward declarations: Interfaces }
IStringList = interface;
IStringListDisp = dispinterface;
IRequestDictionary = interface;
IRequestDictionaryDisp = dispinterface;
IRequest = interface;
IRequestDisp = dispinterface;
IReadCookie = interface;
IReadCookieDisp = dispinterface;
IWriteCookie = interface;
IWriteCookieDisp = dispinterface;
IResponse = interface;
IResponseDisp = dispinterface;
IVariantDictionary = interface;
IVariantDictionaryDisp = dispinterface;
ISessionObject = interface;
ISessionObjectDisp = dispinterface;
IApplicationObject = interface;
IApplicationObjectDisp = dispinterface;
IServer = interface;
IServerDisp = dispinterface;
IScriptingContext = interface;
IScriptingContextDisp = dispinterface;{ Forward declarations: CoClasses }
{ A string containing comma separated values }
IStringList = interface(IDispatch)
['{D97A6DA0-A85D-11CF-83AE-00A0C90C2BD8}']
function Get_Item(i: OleVariant): OleVariant; safecall;
function Get_Count: SYSINT; safecall;
function Get__NewEnum: IUnknown; safecall;
property Item[i: OleVariant]: OleVariant read Get_Item; default;
property Count: SYSINT read Get_Count;
property _NewEnum: IUnknown read Get__NewEnum;
end;{ DispInterface declaration for Dual Interface IStringList }
IStringListDisp = dispinterface
['{D97A6DA0-A85D-11CF-83AE-00A0C90C2BD8}']
property Item[i: OleVariant]: OleVariant readonly dispid 0; default;
property Count: SYSINT readonly;
end;{ Dictionary for Request collections }
IRequestDictionary = interface(IDispatch)
['{D97A6DA0-A85F-11DF-83AE-00A0C90C2BD8}']
function Get_Item(Var_: OleVariant): OleVariant; safecall;
function Get__NewEnum: IUnknown; safecall;
function Get_Count: SYSINT; safecall;
function Get_Key(VarKey: OleVariant): OleVariant; safecall;
property Item[Var_: OleVariant]: OleVariant read Get_Item; default;
property _NewEnum: IUnknown read Get__NewEnum;
property Count: SYSINT read Get_Count;
property Key[VarKey: OleVariant]: OleVariant read Get_Key;
end;{ DispInterface declaration for Dual Interface IRequestDictionary }
IRequestDictionaryDisp = dispinterface
['{D97A6DA0-A85F-11DF-83AE-00A0C90C2BD8}']
property Item[Var_: OleVariant]: OleVariant readonly dispid 0; default;
property Count: SYSINT readonly;
property Key[VarKey: OleVariant]: OleVariant readonly;
end;IRequest = interface(IDispatch)
['{D97A6DA0-A861-11CF-93AE-00A0C90C2BD8}']
function Get_Item(const bstrVar: WideString): IDispatch; safecall;
function Get_QueryString: IRequestDictionary; safecall;
function Get_Form. IRequestDictionary; safecall;
function Get_Body: IRequestDictionary; safecall;
function Get_ServerVariables: IRequestDictionary; safecall;
function Get_ClientCertificate: IRequestDictionary; safecall;
function Get_Cookies: IReadCookieDisp; safecall;
function Get_TotalBytes: Integer; safecall;
function BinaryRead(var pvarCountToRead: OleVariant): OleVariant; safecall;
property Item[const bstrVar: WideString]: IDispatch read Get_Item; default;
property QueryString: IRequestDictionary read Get_QueryString;
property Form. IRequestDictionary read Get_Form;
property Body: IRequestDictionary read Get_Body;
property ServerVariables: IRequestDictionary read Get_ServerVariables;
property ClientCertificate: IRequestDictionary read Get_ClientCertificate;
property Cookies: IReadCookieDisp read Get_Cookies;
property TotalBytes: Integer read Get_TotalBytes;
end;{ DispInterface declaration for Dual Interface IRequest }
IRequestDisp = dispinterface
['{D97A6DA0-A861-11CF-93AE-00A0C90C2BD8}']
property Item[const bstrVar: WideString]: IDispatch readonly dispid 0; default;
property QueryString: IRequestDictionary readonly;
property Form. IRequestDictionary readonly;
property Body: IRequestDictionary readonly;
property ServerVariables: IRequestDictionary readonly;
property ClientCertificate: IRequestDictionary readonly;
property Cookies: IReadCookieDisp readonly;
property TotalBytes: Integer readonly;
function BinaryRead(var pvarCountToRead: OleVariant): OleVariant;
end;{ Intermediate object for Request.Cookies }
IReadCookie = interface(IDispatch)
['{71EAF260-0CE0-11D0-A53E-00A0C90C2091}']
function Get_Item(Var_: OleVariant): OleVariant; safecall;
function Get_HasKeys: WordBool; safecall;
function Get__NewEnum: IUnknown; safecall;
function Get_Count: SYSINT; safecall;
function Get_Key(VarKey: OleVariant): OleVariant; safecall;
property Item[Var_: OleVariant]: OleVariant read Get_Item; default;
property HasKeys: WordBool read Get_HasKeys;
property _NewEnum: IUnknown read Get__NewEnum;
property Count: SYSINT read Get_Count;
property Key[VarKey: OleVariant]: OleVariant read Get_Key;
end;{ DispInterface declaration for Dual Interface IReadCookie }
IReadCookieDisp = dispinterface
['{71EAF260-0CE0-11D0-A53E-00A0C90C2091}']
property Item[Var_: OleVariant]: OleVariant readonly dispid 0; default;
property HasKeys: WordBool readonly;
property Count: SYSINT readonly;
property Key[VarKey: OleVariant]: OleVariant readonly;
end;{ Intermediate object for Response.Cookies }
IWriteCookie = interface(IDispatch)
['{D97A6DA0-A862-11CF-84AE-00A0C90C2BD8}']
procedure Set_Item(Key: OleVariant; const Value: WideString); safecall;
procedure Set_Expires(Value: TDateTime); safecall;
procedure Set_Domain(const Value: WideString); safecall;
procedure Set_Path(const Value: WideString); safecall;
procedure Set_Secure(Value: WordBool); safecall;
function Get_HasKeys: WordBool; safecall;
function Get__NewEnum: IUnknown; safecall;
property Item[Key: OleVariant]: WideString write Set_Item; default;
property Expires: TDateTime write Set_Expires;
property Domain: WideString write Set_Domain;
property Path: WideString write Set_Path;
property Secure: WordBool write Set_Secure;
property HasKeys: WordBool read Get_HasKeys;
property _NewEnum: IUnknown read Get__NewEnum;
end;{ DispInterface declaration for Dual Interface IWriteCookie }
IWriteCookieDisp = dispinterface
['{D97A6DA0-A862-11CF-84AE-00A0C90C2BD8}']
property Item[Key: OleVariant]: WideString writeonly dispid 0; default;
property Expires: TDateTime writeonly;
property Domain: WideString writeonly;
property Path: WideString writeonly;
property Secure: WordBool writeonly;
property HasKeys: WordBool readonly;
end;IResponse = interface(IDispatch)
['{D97A6DA0-A864-11CF-83BE-00A0C90C2BD8}']
function Get_Buffer: WordBool; safecall;
procedure Set_Buffer(Value: WordBool); safecall;
function Get_ContentType: WideString; safecall;
procedure Set_ContentType(const Value: WideString); safecall;
function Get_Expires: OleVariant; safecall;
procedure Set_Expires(Value: OleVariant); safecall;
function Get_ExpiresAbsolute: OleVariant; safecall;
procedure Set_ExpiresAbsolute(Value: OleVariant); safecall;
function Get_Cookies: IWriteCookieDisp; safecall;
function Get_Status: WideString; safecall;
procedure Set_Status(const Value: WideString); safecall;
procedure Add(const bstrHeaderValue, bstrHeaderName: WideString); safecall;
procedure AddHeader(const bstrHeaderName, bstrHeaderValue: WideString); safecall;
procedure AppendToLog(const bstrLogEntry: WideString); safecall;
procedure BinaryWrite(varInput: OleVariant); safecall;
procedure Clear; safecall;
procedure End_; safecall;
procedure Flush; safecall;
procedure Redirect(const bstrURL: WideString); safecall;
procedure Write(varText: OleVariant); safecall;
procedure WriteBlock(iBlockNumber: Smallint); safecall;
function IsClientConnected: WordBool; safecall;
function Get_CharSet: WideString; safecall;
procedure Set_CharSet(const Value: WideString); safecall;
procedure Pics(const bstrHeaderValue: WideString); safecall;
function Get_CacheControl: WideString; safecall;
procedure Set_CacheControl(const Value: WideString); safecall;
property Buffer: WordBool read Get_Buffer write Set_Buffer;
property ContentType: WideString read Get_ContentType write Set_ContentType;
property Expires: OleVariant read Get_Expires write Set_Expires;
property ExpiresAbsolute: OleVariant read Get_ExpiresAbsolute write Set_ExpiresAbsolute;
property Cookies: IWriteCookieDisp read Get_Cookies;
property Status: WideString read Get_Status write Set_Status;
property CharSet: WideString read Get_CharSet write Set_CharSet;
property CacheControl: WideString read Get_CacheControl write Set_CacheControl;
end;{ DispInterface declaration for Dual Interface IResponse }
IResponseDisp = dispinterface
['{D97A6DA0-A864-11CF-83BE-00A0C90C2BD8}']
property Buffer: WordBool;
property ContentType: WideString;
property Expires: OleVariant;
property ExpiresAbsolute: OleVariant;
property Cookies: IWriteCookieDisp;
property Status: WideString;
procedure Add(const bstrHeaderValue, bstrHeaderName: WideString);
procedure AddHeader(const bstrHeaderName, bstrHeaderValue: WideString);
procedure AppendToLog(const bstrLogEntry: WideString);
procedure BinaryWrite(varInput: OleVariant);
procedure Clear;
procedure End_;
procedure Flush;
procedure Redirect(const bstrURL: WideString);
procedure Write(varText: OleVariant);
procedure WriteBlock(iBlockNumber: Smallint);
function IsClientConnected: WordBool;
property CharSet: WideString;
procedure Pics(const bstrHeaderValue: WideString);
property CacheControl: WideString;
end;{ Dictionary for Variant collections }
IVariantDictionary = interface(IDispatch)
['{4A7DEB90-B069-11D0-B373-00A0C90C2BD8}']
function Get_Item(VarKey: OleVariant): OleVariant; safecall;
procedure _Set_Item(VarKey: OleVariant; Value: OleVariant); safecall;
procedure Set_Item(VarKey: OleVariant; var Value: OleVariant); safecall;
function Get_Key(VarKey: OleVariant): OleVariant; safecall;
function Get_Count: SYSINT; safecall;
function Get__NewEnum: IUnknown; safecall;
property Item[VarKey: OleVariant]: OleVariant read Get_Item write Set_Item; default;
property Key[VarKey: OleVariant]: OleVariant read Get_Key;
property Count: SYSINT read Get_Count;
property _NewEnum: IUnknown read Get__NewEnum;
end;{ DispInterface declaration for Dual Interface IVariantDictionary }
IVariantDictionaryDisp = dispinterface
['{4A7DEB90-B069-11D0-B373-00A0C90C2BD8}']
property Item[VarKey: OleVariant]: OleVariant dispid 0; default;
property Key[VarKey: OleVariant]: OleVariant readonly;
property Count: SYSINT readonly;
end;ISessionObject = interface(IDispatch)
['{D97A6DA0-A865-11CF-83AF-00A0C90C2BD8}']
function Get_SessionID: WideString; safecall;
function Get_Value(const bstrValue: WideString): OleVariant; safecall;
procedure _Set_Value(const bstrValue: WideString; Value: OleVariant); safecall;
procedure Set_Value(const bstrValue: WideString; var Value: OleVariant); safecall;
function Get_Timeout: Integer; safecall;
procedure Set_Timeout(Value: Integer); safecall;
procedure Abandon; safecall;
function Get_CodePage: Integer; safecall;
procedure Set_CodePage(Value: Integer); safecall;
function Get_LCID: Integer; safecall;
procedure Set_LCID(Value: Integer); safecall;
function Get_StaticObjects: IVariantDictionary; safecall;
function Get_Contents: IVariantDictionary; safecall;
property SessionID: WideString read Get_SessionID;
property Value[const bstrValue: WideString]: OleVariant read Get_Value write Set_Value; default;
property Timeout: Integer read Get_Timeout write Set_Timeout;
property CodePage: Integer read Get_CodePage write Set_CodePage;
property LCID: Integer read Get_LCID write Set_LCID;
property StaticObjects: IVariantDictionary read Get_StaticObjects;
property Contents: IVariantDictionary read Get_Contents;
end;{ DispInterface declaration for Dual Interface ISessionObject }
ISessionObjectDisp = dispinterface
['{D97A6DA0-A865-11CF-83AF-00A0C90C2BD8}']
property SessionID: WideString readonly;
property Value[const bstrValue: WideString]: OleVariant dispid 0; default;
property Timeout: Integer;
procedure Abandon;
property CodePage: Integer;
property LCID: Integer;
property StaticObjects: IVariantDictionary readonly;
property Contents: IVariantDictionary readonly;
end;IApplicationObject = interface(IDispatch)
['{D97A6DA0-A866-11CF-83AE-10A0C90C2BD8}']
function Get_Value(const bstrValue: WideString): OleVariant; safecall;
procedure _Set_Value(const bstrValue: WideString; Value: OleVariant); safecall;
procedure Set_Value(const bstrValue: WideString; var Value: OleVariant); safecall;
procedure Lock; safecall;
procedure UnLock; safecall;
function Get_StaticObjects: IVariantDictionary; safecall;
function Get_Contents: IVariantDictionary; safecall;
property Value[const bstrValue: WideString]: OleVariant read Get_Value write Set_Value; default;
property StaticObjects: IVariantDictionary read Get_StaticObjects;
property Contents: IVariantDictionary read Get_Contents;
end;{ DispInterface declaration for Dual Interface IApplicationObject }
IApplicationObjectDisp = dispinterface
['{D97A6DA0-A866-11CF-83AE-10A0C90C2BD8}']
property Value[const bstrValue: WideString]: OleVariant dispid 0; default;
procedure Lock;
procedure UnLock;
property StaticObjects: IVariantDictionary readonly;
property Contents: IVariantDictionary readonly;
end;IServer = interface(IDispatch)
['{D97A6DA0-A867-11CF-83AE-01A0C90C2BD8}']
function Get_ScriptTimeout: Integer; safecall;
procedure Set_ScriptTimeout(Value: Integer); safecall;
function CreateObject(const bstrProgID: WideString): IDispatch; safecall;
function HTMLEncode(const bstrIn: WideString): WideString; safecall;
function MapPath(const bstrLogicalPath: WideString): WideString; safecall;
function URLEncode(const bstrIn: WideString): WideString; safecall;
function URLPathEncode(const bstrIn: WideString): WideString; safecall;
property ScriptTimeout: Integer read Get_ScriptTimeout write Set_ScriptTimeout;
end;{ DispInterface declaration for Dual Interface IServer }
IServerDisp = dispinterface
['{D97A6DA0-A867-11CF-83AE-01A0C90C2BD8}']
property ScriptTimeout: Integer;
function CreateObject(const bstrProgID: WideString): IDispatch;
function HTMLEncode(const bstrIn: WideString): WideString;
function MapPath(const bstrLogicalPath: WideString): WideString;
function URLEncode(const bstrIn: WideString): WideString;
function URLPathEncode(const bstrIn: WideString): WideString;
end;{ Active Server Page Scripting Context }
IScriptingContext = interface(IDispatch)
['{D97A6DA0-A868-11CF-83AE-00B0C90C2BD8}']
function Get_Request: IRequest; safecall;
function Get_Response: IResponse; safecall;
function Get_Server: IServer; safecall;
function Get_Session: ISessionObject; safecall;
function Get_Application: IApplicationObject; safecall;
property Request: IRequest read Get_Request;
property Response: IResponse read Get_Response;
property Server: IServer read Get_Server;
property Session: ISessionObject read Get_Session;
property Application: IApplicationObject read Get_Application;
end;{ DispInterface declaration for Dual Interface IScriptingContext }
IScriptingContextDisp = dispinterface
['{D97A6DA0-A868-11CF-83AE-00B0C90C2BD8}']
property Request: IRequest readonly;
property Response: IResponse readonly;
property Server: IServer readonly;
property Session: ISessionObject readonly;
property Application: IApplicationObject readonly;
end;implementation
uses ComObj;
end. -
ASP上传类
2007-06-07 17:13:12
发现一直没有更新自己的小窝
上来充实一下吧,呵呵,发个以前写的小东东
在以前的版本上基本没什么改动,增加上了文件大小的检测,功能主要实现了以下几点:
1. 支持多个文件同时上传
2. 可对普通表单与上传文件分离
3. 自定义上传文件存放
4. 流处理,上传速度比较理想
5. 调用简单方便<%
Class Upload
Public Form, IsFinished
Private bVBCrlf, bSeparate, formData, fileType, fileSize, folderPath, itemCount, sErrors, sAuthor, sVersion
Private itemStart(), itemLength(), dataStart(), dataLength(), itemName(), itemData(), extenArr()Private Sub Class_Initialize
formData = Request.BinaryRead(Request.TotalBytes)
Set Form = Server.CreateObject("scrīpting.Dictionary")
sAuthor = "51JS.COM-ZMM"
sVersion = "Upload Class 2.0"
Server.scrīptTimeOut = 900
End Sub
Public Property Get ErrMessage
ErrMessage = sErrors
End Property
Public Property Get ClsAuthor
ClsAuthor = sAuthor
End PropertyPublic Property Get ClsVersion
ClsVersion = sVersion
End PropertyPublic Property Let AllowType(byVal sType)
fileType = sType
End PropertyPublic Property Let MaxSize(byVal sSize)
If Not IsNumeric(sSize) Then
fileSize = ""
Else
fileSize = CDbl(FormatNumber(CCur(sSize), 2))
End If
End PropertyPublic Property Let SaveFolder(byVal sFolder)
folderPath = sFolder
End PropertyPublic Function Start
IsFinished = False
bVBCrlf = StrToByte(vbCrlf & vbCrlf)
bSeparate = StrToByte("-----------------------------")
itemCount = 0
sErrors = ""
Call ItemPosition
End FunctionPrivate Function ItemPosition
Dim iStart, iLength : iStart = 1
Do Until InStrB(iStart, formData, bSeparate) = 0
iStart = InStrB(iStart, formData, bSeparate) + LenB(bSeparate) + 14
iLength = InStrB(iStart, formData, bSeparate) - iStart - 2
If Abs(iStart + 2 - LenB(formData)) > 2 Then
ReDim Preserve itemStart(itemCount)
ReDim Preserve itemLength(itemCount)
itemStart(itemCount) = iStart
itemLength(itemCount) = iLength
itemCount = itemCount + 1
End If
Loop
Call FillItemValue
End FunctionPrivate Function FillItemValue
Dim dataPart, bInfor
Dim iStart : iStart = 1
Dim iCount : iCount = 0
Dim iCheck : iCheck = StrToByte("filename")
For i = 0 To itemCount - 1
ReDim Preserve itemName(iCount)
ReDim Preserve itemData(iCount)
ReDim Preserve extenArr(iCount)
ReDim Preserve dataStart(iCount)
ReDim Preserve dataLength(iCount)
dataPart = MidB(formData, itemStart(i), itemLength(i))
iStart = InStrB(1, dataPart, ChrB(34)) + 1
iLength = InStrB(iStart, dataPart, ChrB(34)) - iStart
itemName(iCount) = FormItemName(MidB(dataPart, iStart, iLength))
iStart = InStrB(1, dataPart, bVBCrlf) + 4
iLength = LenB(dataPart) - iStart + 1
If InStrB(1, dataPart, iCheck) > 0 Then
bInfor = MidB(dataPart, 1, iStart - 5)
extenArr(iCount) = FileExtenName(bInfor)
If Mid(folderPath, Len(folderPath) - 1) = "/" Then
itemData(iCount) = folderPath & GetRndName(6) & extenArr(iCount)
Else
itemData(iCount) = folderPath & "/" & GetRndName(6) & extenArr(iCount)
End If
dataStart(iCount) = itemStart(i) + iStart - 2
dataLength(iCount) = iLength
Else
extenArr(iCount) = ""
itemData(iCount) = ByteToStr(MidB(dataPart, iStart, iLength))
dataStart(iCount) = ""
dataLength(iCount) = ""
End If
iCount = iCount + 1
Next
Call SaveUpload
End FunctionPrivate Function FormItemName(byVal bName)
FormItemName = ByteToStr(bName)
End FunctionPrivate Function FileExtenName(byVal bInfor)
Dim pStart, pLength, pContent, regEx
pStart = InStr(1, ByteToStr(bInfor), "filename=" & Chr(34)) + 10
pLength = InStr(pStart, ByteToStr(bInfor), Chr(34)) - pStart
pContent = Mid(ByteToStr(bInfor), pStart, pLength)
If pContent = "" Then
FileExtenName = ""
Else
Set regEx = New RegExp
regEx.Pattern = "^.*(\.[^\.]*)$"
regEx.Global = False
regEx.IgnoreCase = True
FileExtenName = regEx.Replace(pContent, "$1")
Set regEx = Nothing
End If
End FunctionPrivate Function GetRndName(byVal sLen)
Dim regEx, sTemp, arrFields, n : n = 0
Set regEx = New RegExp
regEx.Pattern = "[^\d]*"
regEx.Global = True
regEx.IgnoreCase = True
sTemp = regEx.Replace(Now, "") & "-"
Set regEx = Nothing
arrFields = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", _
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", _
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", _
"u", "v", "w", "x", "y", "z", "A", "B", "C", "D", _
"E", "F", "G", "H", "I", "J", "K", "L", "M", "N", _
"O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", _
"Y", "Z")
Randomize
Do While n < sLen
sTemp = sTemp & CStr(arrFields(61 * Rnd))
n = n + 1
Loop
GetRndName = sTemp
End FunctionPrivate Function SaveUpload
Dim isValidate
Dim filePath, oStreamGet, oStreamPut
isValidate = CheckFile
If isValidate Then
For i = 0 To itemCount - 1
If (dataStart(i) <> "") And (dataLength(i) <> "") Then
If dataLength(i) = 0 Then
itemData(i) = ""
Else
filePath = Server.MapPath(itemData(i))
If CreateFolder("|", ParentFolder(filePath)) Then
Set ōStreamGet = Server.CreateObject("ADODB.Stream")
oStreamGet.Type = 1
oStreamGet.Mode = 3
oStreamGet.Open
oStreamGet.Write formData
oStreamGet.Position = dataStart(i)
Set ōStreamPut = Server.CreateObject("ADODB.Stream")
oStreamPut.Type = 1
oStreamPut.Mode = 3
oStreamPut.Open
oStreamPut.Write oStreamGet.Read(dataLength(i))
oStreamPut.SaveToFile(filePath)
oStreamGet.Close
Set ōStreamGet = Nothing
oStreamPut.Close
Set ōStreamPut = Nothing
End If
End If
End If
Next
IsFinished = True
Call ItemToColl
Else
IsFinished = False
End If
End FunctionPrivate Function CheckFile
Dim oBoolean : ōBoolean = True
CheckFile = oBoolean And CheckType And CheckSize
End FunctionPrivate Function CheckType
Dim oBoolean : ōBoolean = True
If fileType = "" Then
ōBoolean = oBoolean And True
Else
For i = 0 To itemCount - 1
If extenArr(i) <> "" Then
If InStr(1, Ucase(fileType), "|" & Ucase(Mid(extenArr(i), 2)) & "|") > 0 Then
ōBoolean = oBoolean And True
Else
sErrors = sErrors & "表单 [ " & itemName(i) & " ] 的文件格式错误!\n" & _
"支持的格式为:" & Replace(Mid(fileType, 2, Len(fileType) - 1), "|", " ") & "\n\n"
ōBoolean = oBoolean And False
End If
End If
Next
End If
CheckType = oBoolean
End FunctionPrivate Function CheckSize
Dim oBoolean : ōBoolean = True
If fileSize = "" Then
ōBoolean = oBoolean And True
Else
For i = 0 To itemCount - 1
If dataLength(i) <> "" Then
Dim tmpSize
tmpSize = CDbl(FormatNumber(CCur(dataLength(i)) / 1024, 2))
If tmpSize <= fileSize Then
ōBoolean = oBoolean And True
Else
sErrors = sErrors & "表单 [ " & itemName(i) & " ] 的文件大小 (" & tmpSize & " KB) 超出范围!\n" & _
"支持大小范围:<= " & fileSize & " KB\n\n"
ōBoolean = oBoolean And False
End If
End If
Next
End If
CheckSize = oBoolean
End FunctionPrivate Function CreateFolder(byVal sLine, byVal sPath)
Dim oFso
Set ōFso = Server.CreateObject("scrīpting.FileSystemObject")
If Not oFso.FolderExists(sPath) Then
Dim regEx
Set regEx = New RegExp
regEx.Pattern = "^(.*)\\([^\\]*)$"
regEx.Global = False
regEx.IgnoreCase = True
sLine = sLine & regEx.Replace(sPath, "$2") & "|"
sPath = regEx.Replace(sPath, "$1")
If CreateFolder(sLine, sPath) Then CreateFolder = True
Set regEx = Nothing
Else
If sLine = "|" Then
CreateFolder = True
Else
Dim sTemp : sTemp = Mid(sLine, 2, Len(sLine) - 2)
If InStrRev(sTemp, "|") = 0 Then
sLine = "|"
sPath = sPath & "\" & sTemp
Else
Dim Folder : Folder = Mid(sTemp, InStrRev(sTemp, "|") + 1)
sLine = "|" & Mid(sTemp, 1, InStrRev(sTemp, "|") - 1) & "|"
sPath = sPath & "\" & Folder
End If
oFso.CreateFolder sPath
If CreateFolder(sLine, sPath) Then CreateFolder = True
End if
End If
Set ōFso = Nothing
End FunctionPrivate Function ParentFolder(byVal sPath)
Dim regEx
Set regEx = New RegExp
regEx.Pattern = "^(.*)\\[^\\]*$"
regEx.Global = True
regEx.IgnoreCase = True
ParentFolder = regEx.Replace(sPath, "$1")
Set regEx = Nothing
End FunctionPrivate Function StrToByte(byVal sText)
For i = 1 To Len(sText)
StrToByte = StrToByte & ChrB(Asc(Mid(sText, i, 1)))
Next
End FunctionPrivate Function ByteToStr(byVal sByte)
Dim oStream
Set ōStream = Server.CreateObject("ADODB.Stream")
oStream.Type = 2
oStream.Mode = 3
oStream.Open
oStream.WriteText sByte
oStream.Position = 0
oStream.CharSet = "gb2312"
oStream.Position = 2
ByteToStr = oStream.ReadText
oStream.Close
Set ōStream = Nothing
End FunctionPrivate Function ItemToColl
For i = 0 To itemCount - 1
If Not Form.Exists(itemName(i)) Then
Form.Add itemName(i), itemData(i)
End If
Next
End FunctionPrivate Sub Class_Terminate
Form.RemoveAll
Set Form = Nothing
End Sub
End Class
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
Rem 建立上传类实例
Set ōUpload = New Upload
Rem 指定允许上传文件的类型
oUpload.AllowType = "|GIF|BMP|JPG|RAR|"
Rem 指定允许上传文件的大小(单位:KB)
oUpload.MaxSize = 200
Rem 指定上传文件所存储的相对路径
oUpload.SaveFolder = "51JS.COM-ZMM/UploadFile"
Rem 开始上传处理
oUpload.Start
If oUpload.IsFinished Then
Rem 上传成功,显示上传信息
Dim sHtml : sHtml = ""
sHtml = sHtml & "<center>"
sHtml = sHtml & "<div style=""width: 600px;height: 500px;font-size: 10pt;border: 1px solid highlight;overflow: auto;"" align=""left"">"
sHtml = sHtml & "<center style=""font-size: 15pt;color: red;"">上传表单数据</center><br>"
sHtml = sHtml & "标题:<br>" & oUpload.Form("P_title") & "<br><br><br>"
sHtml = sHtml & "类型:<br>" & oUpload.Form("P_assort") & "<br><br><br>"
sHtml = sHtml & "小图:<br>服务器端路径:<a href=""" & oUpload.Form("P_image_s") & """ target=""_blank"">" & oUpload.Form("P_image_s") & "</a><br><img src=""" & oUpload.Form("P_image_s") & """><br><br><br>"
sHtml = sHtml & "中图:<br>服务器端路径:<a href=""" & oUpload.Form("P_image_m") & """ target=""_blank"">" & oUpload.Form("P_image_m") & "</a><br><img src=""" & oUpload.Form("P_image_m") & """><br><br><br>"
sHtml = sHtml & "大图:<br>服务器端路径:<a href=""" & oUpload.Form("P_image_b") & """ target=""_blank"">" & oUpload.Form("P_image_b") & "</a><br><img src=""" & oUpload.Form("P_image_b") & """><br><br><br>"
sHtml = sHtml & "介绍:<br>" & oUpload.Form("P_content") & "<br>"
sHtml = sHtml & "</div>"
sHtml = sHtml & "</center>"
Response.Write sHtml
Response.End
Else
Rem 上传失败,显示错误信息
Call ShowMsg(oUpload.ErrMessage, Request.ServerVariables("scrīpt_NAME"))
End If
Rem 对话框提示函数
Function ShowMsg(byVal sText, byVal sTarget)
Dim sscrīpt : sscrīpt = ""
sscrīpt = sscrīpt & "<scrīpt language=""javascrīpt"">" & vbCrlf & _
"window.alert('" & sText & "');" & vbCrlf & _
"window.location.replace('" & sTarget & "');" & vbCrlf & _
"</scrīpt>"
Response.Write sscrīpt
Response.End
End Function
End If
%><html>
<head>
<title>多文件、表单混合上传类</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
body {
margin: 0px;
border: 0px;
font-size: 10pt;
}
table {
border-collapse: collapse;
font-size: 10pt;
}
td {
font-size: 10pt;
}
</style>
<scrīpt language="javascrīpt">
function formCheck(_form) {
for (var i = 0; i < _form.elements.length; i ++) {
if (_form.elements[i].value == '') {
window.alert('请将表单填写完整,提交失败!');
return false;
}
}
return true;
}
</scrīpt>
</head>
<body>
<br><br>
<form action="<%=Request.ServerVariables("scrīpt_NAME")%>" method="post" enctype="multipart/form-data" ōnsubmit="return formCheck(this);">
<table width="400" align="center" cellpadding="2" cellspacing="0" border="1" rules="box">
<tr height="26">
<td colspan="2" align="center" style="font: 12pt;color: red;">上传功能测试<br><br></td>
</tr>
<tr valign="top">
<td height="30" style="padding-top:3px;">标题:</td>
<td><input type="text" name="P_title" size="20" autocomplete="off"></td>
</tr>
<tr valign="top">
<td height="30" style="padding-top:3px;">类型:</td>
<td>
<select name="P_assort">
<option value="电子">电子</option>
<option value="医疗">医疗</option>
</select>
</td>
</tr>
<tr valign="top">
<td height="30" style="padding-top:3px;">小图:</td>
<td><input type="file" name="P_image_s" ōnkeydown="return false;" ōncontextmenu="return false;" ōnpaste="return false;" ōndragenter="return false;"></td>
</tr>
<tr valign="top">
<td height="30" style="padding-top:3px;">中图:</td>
<td><input type="file" name="P_image_m" ōnkeydown="return false;" ōncontextmenu="return false;" ōnpaste="return false;" ōndragenter="return false;"></td>
</tr>
<tr valign="top">
<td height="30" style="padding-top:3px;">大图:</td>
<td><input type="file" name="P_image_b" ōnkeydown="return false;" ōncontextmenu="return false;" ōnpaste="return false;" ōndragenter="return false;"></td>
</tr>
<tr>
<td height="30" colspan="2" style="padding-top:3px;">介绍:</td>
</tr>
<tr>
<td height="30" colspan="2" valign="top">
<textarea name="P_content" cols="50" rows="5"></textarea>
</td>
</tr>
<tr>
<td colspan="2" valign="top" align="center">
<br><input type="submit" value="提交"> <input type="reset" value="重置">
<br><br>
</td>
</tr>
</table>
<body>
</html> -
什么是3G
2006-11-20 11:35:38
所谓3G,其实它的全称为3rd Generation,中文含义就是指第三代数字通信。1995年问世的第一代数字手机只能进行语音通话;1996到1997年出现的第二代数字手机便增加了接收数据的功能,如接受电子邮件或网页;第三代与前两代的主要区别是在传输声音和数据的速度上的提升,它能够处理图像、音乐、视频流等多种媒体形式,提供包括网页浏览、电话会议、电子商务等多种信息服务。为了提供这种服务,无线网络必须能够支持不同的数据传输速度,也就是说在室内、室外和行车的环境中能够分别支持至少2Mbps(兆字节/每秒)、384kbps(千字节/每秒)以及144kbps的传输速度。(此数值根据网络环境会发生变化)
3G的技术标准
国际电信联盟(ITU)在2000年5月确定W—CDMA、CDMA2000和TDS—CDMA三大主流无线接口标准,写入3G技术指导性文《2000年国际移动通讯计划》(简称IMT—2000)。
相对第一代模拟制式手机(1G)和第二代GSM、TDMA等数字手机(2G),3G通信的名称繁多,国际电联规定为“IMT-2000”(国际移动电话2000)标准,欧洲的电信业巨头们则称其为“UMTS”通用移动通信系统。
该标准规定,移动终端以车速移动时,其传转数据速率为144kbps,室外静止或步行时速率为384kbps,而室内为2Mbps。但这些要求并不意味着用户可用速率就可以达到2Mbps,因为室内速率还将依赖于建筑物内详细的频率规划以及组织与运营商协作的紧密程度。
目前已经进行商业应用的2.5G移动通信技术是从2G迈向3G的衔接性技术,由于3G是个相当法浩大的工程,所牵扯的层面多且复杂,要从目前的2G迈向3G不可能一下就衔接得上,因此出现了个介于2G和3G之间的2.5G。HSCSD、GPRS、WAP、EDGE、蓝牙(Bluetoot)、EPOC等技术都是2.5G技术。
HSCSD这是GSM网络的升级版本,能够将传输速度大幅提升到平常的二至三倍。目前新加坡M1与新加坡电讯的移动电话都采用HSCSD系统,其传输速度能够达到57.6kbps。
GPRS由于具备立即联机的特性,对于使用者而言,可说是随时都在上线的状态。GPRS技术也让服务业者能够依据数据传输量来收费,而不是单纯的以联机时间计费。这项技术与GSM网络配合,传输速度可以达到115kbps。
EDGE完全以目前的GSM标准为架构,不但能够将GPRS的功能发挥到极限,还可以透过目前的无线网络提供宽频多媒体的服务。EDGE的传输速度可以达到384kbps,可以应用在诸如无线多媒体、电子邮件、网络信息娱乐以及电视会议上。
WAP是移动通信与互联网结合的第一阶段性产物,也是大家听说最多的。这项技术让使用者可以用手机之类的无线装置上网,透过小型屏幕遍游在各个同站之间。而这些同站也必须以WMl(无线标记语言)编写,相当于国际互联网上的HTML(超文件标记语言)。
3G时代展望
日本移动通讯巨人NTT DoCoMo已于10月1日开通全球第一个3G服务,该服务基于WCDMA标准。目前,亚洲成为3G发展最快的地区,欧洲紧随其次,美国由于不太热心而在技术准备上远远落后。除了动作最快的日本和韩国,泰国、香港也已经发出3G牌照。台湾即将发放工3G牌照。预计内地在年底前表出3G牌照,市场预期将发行两到三个拍照三个牌照。
3G(3rd Generation)指第三代移动通信技术,与前两代系统相比,第三代移动通信系统的主要特征是可提供丰富多彩的移动多媒体业务。其设计目标是为了提供比第二代系统更大的系统容量、更好的通信质量,而且要能在全球范围内更好地实现无缝漫游及为用户提供包括话音、数据及多媒体等在内的多种业务,同时也要考虑与已有第二代系统的良好兼容性。
目前国际电联接受的3G标准主要有以下三种:WCDMA、CDMA2000与TD-SCDMA。CDMA是Code Division Multiple Access (码分多址)的缩写,是第三代移动通信系统的技术基础。第一代移动通信系统采用频分多址(FDMA)的模拟调制方式,这种系统的主要缺点是频谱利用率低,信令干扰话音业务。第二代移动通信系统主要采用时分多址(TDMA)的数字调制方式,提高了系统容量,并采用独立信道传送信令,使系统性能大为改善,但TDMA的系统容量仍然有限,越区切换性能仍不完善。CDMA系统以其频率规划简单、系统容量大、频率复用系数高、抗多径能力强、通信质量好、软容量、软切换等特点显示出巨大的发展潜力。下面分别介绍一下3G的几种标准:
(1) WCDMA
全称为Wideband CDMA,这是基于GSM网发展出来的3G技术规范,是欧洲提出的宽带CDMA技术,它与日本提出的宽带CDMA技术基本相同,目前正在进一步融合。该标准提出了GSM(2G)-GPRS-EDGE-WCDMA(3G)的演进策略。GPRS是General Packet Radio Service (通用分组无线业务)的简称,EDGE是Enhanced Data rate for GSM Evolution (增强数据速率的GSM演进)的简称,这两种技术被称为2.5代移动通信技术。
(2)CDMA2000
CDMA2000是由窄带CDMA(CDMA IS95)技术发展而来的宽带CDMA技术,由美国主推,该标准提出了从CDMA IS95(2G)-CDMA20001x-CDMA20003x(3G)的演进策略。CDMA20001x被称为2.5代移动通信技术。CDMA20003x与CDMA20001x的主要区别在于应用了多路载波技术,通过采用三载波使带宽提高。目前中国联通正在采用这一方案向3G过渡,并已建成了CDMA IS95网络。
(3)TD-SCDMA
全称为Time Division ——Synchronous CDMA(时分同步CDMA),是由我国大唐电信公司提出的3G标准,该标准提出不经过2.5代的中间环节,直接向3G过渡,非常适用于GSM系统向3G升级。
UMTS
UMTS是早在90年代初期,欧洲电信标准协会(ETSI)就开始为3G标准征求技术方案。并雄心勃勃的把3G技术统称之为UMTS(Universal Mobile Telecommunications System),意即通用移动通信系统。宽带CDMA(带宽5MHz)建议是其多种方案之一。其后,日本的积极参与极大地推动了3G标准的全球化步伐。在1998年,日本和欧洲在宽带CDMA建议的关键参数上取得一致,使之正式成为UMTS体系中FDD(频分双工)频段的空中接口的入选技术方案,并由此通称为WCDMA 。W即宽带,以有别于源于北美的窄带CDMA(带宽1.25MHz)标准。
UMTS的4个版本
上述的技术标准的持续发展,体现为3GPP的UMTS标准的4个版本:R99、R4、R5、R6。形成了一个庞大的而内部又相对独立的标准体系。 WCDMA是其中最早,也是最完善的首选空中接口,并为欧洲,亚洲和美洲的3G运营商所广泛选用。

