Javaphua Blog

BlogJava 首页 新随笔 联系 聚合 管理
  46 Posts :: 5 Stories :: 46 Comments :: 0 Trackbacks

#

JBuilder2007 打通任督二脉的崭新Java开发工具

JBuilder的发展史说起来并不顺畅,从早期JBuilder 1~3版本在Java开发工具竞争场中苦苦追赶对手,到JBuilder 4~8版本时期雄霸Java开发工具王者的宝座,JBuilder可以说是在备尝艰辛之后才拥有光荣的Java开发工具王朝。但是许多人并不知道JBuilder在Borland内部的定位非常奇怪,也就是因为这个定位让JBuilder在9之后的版本逐渐被其他Java开发工具夺去其第一的地位。这个故事要从JBuilder成功地成为第一的Java开发工具之后说起。
原来在数年前当JBuilder 8打下天下之后,Borland开始走向ALM的市场。由于JBuilder在当时是举世皆知的Borland成名工具,因此当Borland决定开发ALM产品系列时,希望使用Java技术,并且希望能够和JBuilder连接在一起,好借助当时JBuilder在企业的影响力而能够顺利地把Borland的ALM产品线打入企业市场。所以当时JBuilder在Borland内部被归属为ALM部门的产品,而不属于开发工具部门的产品。
由于JBuilder肩负了ALM的重大任务,在随后的版本中,JBuilder的功能大都是为了与ALM产品连接以及支持最新的EJB服务器,因此,JBuilder R&D花费了大量的时间集成Borland ALM产品,更新使用最新的JDK和各厂商的EJB服务器,几乎把所有精力都放在企业级的应用。然而不幸的是,那时正是开源码和各种Java开源框架蓬勃发展的时期,Java开发者最需要的是Java开发工具能够支持这些最新、最重要的Java框架和Java技术,JBuilder却在Borland错误的定位下逐渐失去其领导地位。不过,虽然在这个时期JBuilder错失了大多数开发人员需要的功能,但是我个人认为JBuilder唯一在开发者需求方面最成功的地方就是集成了Together的强大建模能力,以及能够对于模型/程序码进行稽核和度量的功能,这是任何其他Java开发工具所不能企及的。
2006年是JBuilder转机的一年,因为JBuilder终于脱离了Borland而正式成为CodeGear公司的主力Java开发工具。CodeGear终于能够指正Borland犯下的错误,让JBuilder有机会重返Java开发工具王者的地位,主角就是JBuilder 2007。
是什么使JBuilder 2007能够再次成为Java开发工具的首选? 现在版本的JBuilder有什么过人之处以及比不上的地方? 答案就是JBuilder有无人能及的建模和企业级的开发功能,例如JBuilder的EJB开发功能。表现不如人意的地方就是缺乏支持主流Java框架,例如Hibernate,Spring和Web方面的框架,以及充分支持开发人员生产力的功能,例如Build Java项目、追踪臭虫、项目管理等。
而目前EJB 3和Java Persistence API(JPA)正如潮水般席卷Java开发社群,Hibernate 3.x和Oracle的TopLink都开始支持JPA,JBoss 4.x和GlassFish/AppSever 9也都支持EJB 3.0的开发,因此JBuilder 2007的成功运算式就是:
完整建模能力 + 主流Java框架 + 强大EJB3/JPA开发能力 + 高生产力开发者功能
JBuilder 2007将充分而且完美地结合第一名的Java商业开发工具和Java开源框架/程序码成为第一个打通任督二脉的崭新Java开发工具。例如在JBuilder 2007中我可以建立可视化EJB 3开发项目,可视化JPA开发项目,Hibernate/Spring项目,Tapestry项目,Java建模项目等,JBuilder 2007支持的Java相关开发项目绝对是第一的。例如下图就是笔者在JBuilder 2007中使用JBoss 4.x + Hibernate 3.x + InterBase 2007进行可视化EJB 3.0的项目开发:

11月28日和11月30日我将代表公司分别在北京和上海举办JBuilder 2007的发布会,使用Java开发的朋友将有机会一见最强大的新时代Java开发工具:JBuilder 2007。在这个发布会中我将介绍JBuilder的技术发展史,JBuilder 2007的技术架构,令人惊叹的新功能以及JBuilder未来的发展路线图,不管您目前是否使用JBuilder,您都需要看看这个即将震撼Java开发工具界的王者。对于大陆的朋友,您可以在下面的URL中找到相关资讯:
http://www.csdn.net/subject/borland/index.html
CodeGear的JBuilder会成功地重返顶级Java开发工具之巅吗? 我想这是有机会的,CodeGear也有决心做到。从CodeGear的第一个推出版本JBuilder 2007看来,这个目标似乎已经不远了。现在连我这个以前不常使用JBuilder的人都愈来愈喜欢JBuilder 2007了,最近一段时间居然发现花在JBuilder 2007集成开发环境中的时间比花在BDS 2006都多了,呵呵,这当然是因为我非常喜欢EJB 3/JPA和Hibernate 3.x,现在JBuilder 2007是支持这三个最新技术的最完整和强大的Java开发工具。
这篇介绍JBuilder 2007的文章只是第1篇,因为这篇文章的名称就是“首部曲”。在下一篇文章中我将会介绍如何使用JBuilder 2007开发EJB 3.0的应用程序,还将详细介绍如何使用JBoss 4.x + Hibernate 3.x + InterBase 2007+JBuilder 2007进行强大的可视化开发。
我们下次再见了:)。


jbuilder 2007 好像是居于eclipse开发的。
posted @ 2006-12-15 14:15 Javaphua 阅读(734) | 评论 (6)编辑 收藏

编 程 之 道
Geoffrey James
 
  第一篇 静寂的空宇
  第二篇 古代的大师
  第三篇 设计
  第四篇 编码
  第五篇 维护
  第六篇 管理
  第七篇 公司里的学问
  第八篇 硬件和软件
  第九篇 尾声
 
 
第一篇 静寂的空宇
编程大师如是说:
“当你有本事夺走我手中的这块水晶石时,就是你出师的时侯了。”
1.1
在静寂的空宇里,一种神奇的物质形成并诞生了。它立刻便静止了,独自守侯着,豪无动静,然而又处于永恒的运动之中。它是所有程序的源头,我不知道它的名字,所以我将称它为编程之道。
 
如果此道是完美的,那些操作系统就是完美的,如果操作系统是完美的,那么编译程序就是完美的,如果编译程序是完美的,那么应用程序就是完美的。用户满意之至--和谐便应运而生。
 
编程之道流逝远去,又乘着晨风而归。
1.2
此道产生了机器语言,机器语言又产生了汇编语言,
汇编语言产生了编译程序,如今有了上万种的语言。
每一种语言都有其各自的卑微用途。每一种语言都表达出软件的阴和阳。每一种语言都在此道之中有其一席之地。
但是,应尽量避免用COBOL语言编写程序。
1.3
宇宙之初有道,道产生了空间和时间。空间和时间便是程序设计之阴阳。
不能领悟此道的编程者总是耗尽他们所要编写的程序的时间和空间;而领悟了此道的编程者却总有足够的时间和空间来达到他们的目标。
除此之外,难道还有其它的情形吗? 1.4
精明的编程者听说了此道,并遵循它;平庸的编程者听说了此道,并寻觅它;愚蠢的编程者听说了此道,却嘲笑它。
要不是因为有嘲笑,道也就不复存在了。
最高的声音最难被听见。前进也是一种倒退。大器晚成。即使是一个完美的程序也仍然会有隐患。
道深藏不露,难于理解。
top
 
 
 
第二篇 古代的大师
编程大师如是说:
“倘若三天不编程,生活将变得毫无意义。”
2.1
老一辈的程序员是神秘的、深奥的。我们没法揣摩他们的想法,我们所能做的只是描述一下他们的表象。
  他们是清醒的,就像一只游过水面的狐狸;
  他们是警惕的,就像一位战场上的将军;
  他们是友善的,就像一位招待客人的女主人;
  他们是简单的,就像未经刻凿的木头;
  他们还是难以琢磨的,就像黑暗的洞穴中漆黑的池水。
谁能说出他们心中的秘密?
答案只存在于道中。
2.2
计算机科学巨擘图灵曾经梦到他是一台机器。当他醒来时,他惊叹道:
“我不知道--我是梦到了自己是台机器的图灵,还是一台梦到了自己是图灵的机器?”
2.3
一家大电脑公司的一名程序员参加了一次软件研讨会。他回来后向经理汇报说:“为其它公司工作的那些程序员都是些什么的人啊?他们行为拙劣,不顾及自己的仪表。他们的头发又长又乱,衣服又皱又旧。他们闯进我们的会客组,还在我演讲时发生粗鲁的喧闹。”
 
经理说:“我本不应该让你去参加这个会议。那些程序员是生活在物质世界之外的。他们认为生活是荒唐的,一种意外的巧合。他们来去自如。他们只为他们的程序而活着,无忧无虑地活着。为什么要用社会习俗来约束他们呢?
 
他们活在此道之中。”
2.4
一个礼堂者问大师:“有位程序员,从不构思、编写文档或测试他的程序,然而所有知道他的人都认为他是世界上最棒的程序员。这是为什么呢?”
大师回答说:“那个人掌握了道。他不需要事先进行构思,当系统崩溃时,他不会因此而闷闷不乐,而是心平气和地接受整个事实。他还从编写程序说明文档的需要之中超脱了出来,不在意是否有人看他的编码。他也不需要进行测试。他的每个程序都完美无缺。宁静而优雅,程序的用途也显而易见。
 
的的确确,他已经进入了道的神奇境界。”
top
 
第三篇 设计
编程大师如是说:
“当程序被测试时,再修改设计方案就太迟了。”
3.1
曾经有个人去参加一次电脑展示会,每天当他进入展馆时,都对门卫说:
“我是个大盗,我偷盗的本领是出了名的。事先警告你,这次展示会也在劫难逃。”
这番话让门卫坐立不安,因为里面有价值数百万美元的电脑设备,所以他紧紧地盯住这个人。但这个人只是从一个展摊逛到另一个展摊,嘴里轻轻地哼着小曲。
当这个人出门时,门卫把他拉到一边,搜查他的衣服,但一无所获。
第二天,这个人又来了,并对着门卫嚣张地嚷着:“昨天我满载而归,但今天的收获会更大。”于是,门卫盯他盯得更紧了,但仍一无所获。
在展示会的最后一天,门卫再也抑制不住自己的好奇心了。“大盗先生,”门卫说,“我被你搞糊涂了,实在想不明白。请告诉我,你究竟在偷什么?”
这个人笑了。“我在偷想法。”他说。
3.2
曾经有位编程大师,喜欢编写非结构化的编程。一位初学者试图模仿他,也开始编写非结构化的程序。当这位徒弟请师父评价他的进展时,师父批评了他的做法。他说:“对一位编程高手适合的,对初学者来说并不一定适合。在超越结构化之前,你必须先领悟道。”
 
3.3
曾经有位程序员被派到IBM的军机大臣手下工作。军机大臣问程序员:“设计一个财务软件包,和设计一个操作系统,哪一个更容易?”
“操作系统。”程序员回答说。
军机大臣立刻发生一种不信任的惊叹,“与一个复杂的操作系统,一个财务软件包简直是小巫见大巫。”他说。
“并非如此,”程序员说,“在设计一个财务软件包时,编程人员是作为一个中介者在观念各异的人们之间起作用的:这个软件必须如何操作,它的报表必须是什么形式,它必须如何与税法一致,等等,一个操作系统则不为其外观所限制。当设计一个操作系统时,编程人员只要在机器与人的思维之间寻找一种最简单的和谐就可以了。这就是为什么操作系统更容易设计。”
 
军机大臣点点头,笑了。“说来也是。但要想检测和纠正其中的错误,哪个更容易呢?”
程序员没有回答。
3.4
一位经理到编程大师那里,交给他一份有关一个新应用程序的需求说明。经理问编程大师:“如果我分配五个程序员给你,你需要多久能设计好这个系统?”
“那将花费一年的时间。”大师立刻回答。
“但我们马上就需要这个系统,甚至要求更快!如果我分配十个程序员给你,你需要多长时间?”
大师皱了皱眉头,“那样的话,需要两年。”
“如果我分配一百个程序员给你怎么样?”
大师耸了耸肩膀,“那么这项设计将永远无法完成。”他说  
 
 
 
第四篇 编码
编程大师如是说:
“一个写得完美的程序是其自身的天堂,而一个写得糟糕的程序则是其自身的地狱。”
4.1
一个程序应当是轻盈的、灵活的,它的子程序就像一串珍珠一样连接着。它的精神和意图应该贯穿始终。在程序中,内容既不应太多,也不应太少;既不应该有不需要的循环结构,也不该有冗余的变量;既不缺乏结构性,又不过分僵化。
 
一个程序,无论多么复杂,都应该以一个整体的方式运行。程序应以其内在的逻辑为指引,而非外在形态。
如果一个程序不能达到这些要求,它将处于一种杂乱无章的混淆不清的状态。唯一的方法就是重写这个程序。
4.2
一位初学者问大师:“我有个程序,时灵时不灵。我一直都遵循着编程的规则,结果却整个儿搞糊涂了。这是什么原因呢?”
大师回答说:“因为你没有领悟道,所以你迷惑不解。只有傻瓜才会指望从人类身上看到理性的行为,你又能指望一台人类制造的机器怎么样呢?计算机模仿的是决定论,只有道才是尽善尽美。
 
编程用的那些条条框框式的规则仅仅是昙花一现,只有道才是永恒的。因此,在你受到道的启发之前,你必须沉思于道。”
“但是我怎样才能知道我已经受到了启发了呢?”初学者问。
“当你的程序运行无误时。”大师回答说。
4.3
一位大师正在向他的一名初学编程的弟子解释道的真谛。“此道体现在所有的软件当中--不管它看上去多么无足轻重。”大师说着。
“此道体现在手掌计算器中吗?”初学者问。
“是的。”
“此道在电子游戏中吗?”初学者继续问。
“此道甚至也体现在电子游戏之中。”大师说。
“那么此道也体现在个人电脑的DOS系统之中吗?”
大师咳嗽一声,并稍稍挪动了一下位置。“今天的课就到这里吧。”他说。
4.4
一位项目经理手下的一名程序员正编写软件。他的手指在键盘上飞舞着,在程序的编译过程中没有出现任何错误信息。程序运行起来就像一阵和风。
“太好了!”经理高兴地大叫了起来,“你的技艺简直是完美无缺。”
“技艺?”程序员说着便从他的终端机前转过身来,“我遵循的是道--所有的技艺远不能及!当我刚开始编程时,我眼前看见的是整个问题乱成一团。三年之后,我再也看不见这种一团糟的情形了。相反,我用了各种各样的子程序。但现在,我什么也看不见了。我的整个身心存在于一种无形的虚空里,我的知觉是空荡荡的。
 
我的精神随其本能而动,不无原则计划就能自由地工作。总而言之,是我的程序自己写出了自己。诚然,有时会有一些难题。我看见那些难题向我走来,于是我放慢了速度,默默地注视着他们。然后我更改了一行编码,那些问题就烟消云散了。然后我完成程序的编译。我静静地坐着,让工作的欢心情舒畅遍布我的全身。我闭上双眼,歇息片刻,然后退出系统。”
 
经理说,“希望我的所有的程序员都这么聪明!”


第五篇 维护
编程大师如是说:
“即使一个程序只有三行长,总有一天它也不得不需要维护。”
5.1
一记扇经常开启的门的绞链不需要润滑油。
一条湍急的河流不会变得污浊。
无论是声音还是想法都不可能在真空中传播。
软件如果不用就会腐朽。
这世界真奇妙。
5.2
一个程序员正在编写他的程序,经理问他还需要多长时间完成。
“明天就可以完成。”程序员立刻回答。
“我想你这是不切实际,”经理说,“实话实说,这需要多长时间?”
程序员想了一会儿。“我还想加进一些新的特色,这需要花至少两个星期的时间。”他最后说。
“即使那样也期望过高,”经理坚持说,“只要你编完程序时告诉我一声,我也就满足了。”
程序员答应了。
几年以后,那位经理要退休了。在他去退休午餐会的路上。他发现那个程 序员趴在他的终端机前睡着了。整个晚上都在忙于编写那个程序。
5.3
一次一位初学编程者被指派编写一个简单的财务软件包。这位初学者大张旗鼓地工作了许多天。但当他的师父检查这套程序时,发现其中包含有一个屏幕编辑器,一套通用图表程序,一个人工智能界面,然而却没有任何财务方面的东西。
 
当师父问及此事时,初学者显得愤愤不平。“不要这样没有耐心嘛,”他说,“我最后加些财务的素材进去就是了。”
5.4
难道一位好农民会漏掉他所种的一株庄稼吗?
难道一位好老师会放弃哪怕是最差的学生吗?
难道一位好父亲会允许哪一个孩子挨饿吗?
难道一位好程序员会不愿维护他的程序吗?
top
 
 
 
第六篇 管理
编程大师如是说:
“让程序员多而经理少--然后生产效率就会高。”
6.1
当经理们没完没了地开会时,程序员就写些游戏玩;当财务主管们谈到季度利润时,开发用的预算马上就要被削减;当资深科学家们谈论蓝蓝的天空时,马上就会风起云涌。
其实,这并不是编程之道。
当经理们忠于职守时,游戏程序就会被搁置到一边;财务主管们制订出长 远的计划时,和谐秩序将很快恢复;当资深科学家们着手于眼前的问题时,这些问题不久就会解决。
其实,这才是编程之道。
6.2
为什么程序员没有效率?
因为他们的时间浪费在开会上。
为什么程序员很难管束?
因为管理层多管闲事。
为什么程序员接二连三地辞职?
因为他们的热情已耗尽。
在糟糕的管理之下工作,他们不再敬业。
6.3
一位经理即将被解职,但此时他手下的一名程序员发明了一个新的程序。这个程序流行起来,并且极为畅销。结果,经理又回到了原来的岗位上。
经理试图要发给那位程序员一笔资金,但程序员拒绝了。他说:“我写这个程序,因为我认为这是个很有意思的想法。我并不期望有所回报。”
经理听到这话,评论说:“这位程序员虽然身居卑位,却能很好地理解一位雇员应尽的职责。让我们提拔他到管理顾问的高位上吧!”
然而,接到通知后,那位程序员又一次拒绝了。他说:“我在属于我的位置上,才能较好地编程。如果我被提升了,除了浪费每个人的时间,我将一事无成。现在我可以走了吗?我还有一个程序要编呢。”
 
6.4
一位经理走过来对他的程序员们说:“关于你们的上班时间:你们要早上九点钟到,下午五点钟下班。”听了这话,所有的程序员都很气愤,其中有几位要当场辞职。
于是,经理只好又说:“好吧,那样的话,你们可以自己安排上班时间,只要你们能按时完成项目。”程序员们满意了。以后,他们中午来到办公室,一起工作到凌晨。
top
 
第七篇 公司里的学问
编程大师如是说:
“你可以向一位公司总裁演示一个程序,但你无法使他学会使用电脑。”
7.1
一位初学者问大师:“在东方(此处喻指美国的东海岸,有许多大公司的总部--译注),有一个不寻常的树状结构,人们称它为‘公司总部’。它的副总裁们和财务主管们的数量之大,使它鼓得不成开关。它签发大师的便函,每份上都写着”归去”“来兮”,却没有人知道那是什么意思。它的那些分支机构每年都要换新的名字,但都毫无价值。如此一个不正常的实体怎么能继续存在呢?”
 
大师回答说:“你探察这个庞大的邓因其没有合理的用途而心神不定。难道你不能从它那无尽的回旋中得到乐趣吗?你不会享受一下在它所蔽护的部分里的编程的那种无忧无虑的轻松吗?你为什么要因为它毫无用处而心烦意乱呢?”
 
7.2
在东方,有一条大鱼,比其它所有的鱼都要大。它变成了一只鸟,它的翅膀就像云朵一个布满了天空。当这只鸟飞过陆地时,它带来了“公司总部”的消息,像蜻蜓点水一样把这个消息丢在了那些程序员中间。然后这只鸟驾着风,背负蓝天,返回了家园。
 
初学编程者惊奇地盯着那只鸟,因为他根本无法理解;平庸的程序员畏惧那只鸟的到来,因为他害怕鸟儿带来的消息;而编程大师却仍然在他的终端机前工作,因为他不知道那只鸟来了又去了。
 
7.3
象牙塔里的魔术师带来了他最新的发明,要让编程大师检验一下。魔术师把一只大黑箱子推进办公室,大师静静地等侯着。
“这是一台集成的、分布式的、通用的工作站,”魔术师开始,“运用人类工程学原理,使用享有专利的操作系统、第六代评议和多重状态用户界面而设计完成。建造这台工作站,花了我几百名助手几年的时间。这不足以令人惊奇吗?”
 
大师轻轻地扬了扬眉毛。“这的确令人惊奇。”他说。
“公司总部已经命令,”魔术师继续说,“每个人都得使用这台工作站作为操作平台来设计新的程序。你同意吗?”
“当然同意,”大师说,“我马上就把它运到数据中心去。”于是魔术师兴高采烈地回到了象牙塔去了。
几天后,一位初学者走进大师的办公室问道:“我找不到我的新程序清单了。你知道它会放在哪儿吗?”
“知道,”大师回答说,“那些清单就堆放在数据中心的台子(platform“可以指操作平台”,也可以指普通的台子--译注)上。”
7.4
编程大师从不惧怕在设计不同程序的岗位间调来调去;管理层的变动不可能对他有所损害;他不会被解雇,即使项目取消了。这是为什么呢?因为他胸有成“道”。
top
 
 
 
第八篇 硬件和软件
编程大师如是说:
“没有风,草儿静止不动;没有软件,硬件则无所为用。”
8.1
一位初学者问大师:“我觉察到有一家电脑公司比其它所有的公司都要大得多。它在中遥遥领先,就如同鹤立鸡群一般。它的任意一个部门都可以组成一个完整的企业。这是为什么呢?”
 
大师回答说:“你怎么问这么愚蠢的问题呢?因为那家公司大,所以它就大嘛。如果它仅仅生产硬件,没人愿买;如果它仅仅生产软件,没人愿用;如果它仅仅维护一下系统,人们将把它当作是佣人。然而,因为它把所有这些东西都结合了起来,它便摇身一变,被人们看作是诸神之一。不费吹灰之力,它便能取胜。
 
8.2
一天,一位大师从初学编程者身边经过,他发现这位初学者正在全神贯注于掌上电脑游戏。“对不起,”他说,”我可以看一下吗?”
初学者立刻紧张起来,把那个玩意儿递给了大师。“我知道这种设备提供了三个游戏级别:容易、中等和高难,”大师说,“然而每个这样的设备都有另一个级别,在这一级,游戏机既不想赢人,也不想被人打败。”
 
“请问,尊敬的大师,”初学者恳求道,“怎样才能找到这个奇妙的级别设置呢?”
大师把那个玩意儿扔到地上,踩到粉碎。突然间,那个初学者明白了什么。
8.3
曾经有一个程序员,擅长在微电脑上编程,“瞧,我在这里过得多好呀,”他对另一位来访的程序员说,这位程序员是在大型主机上工作的,“我有自己的操作系统和文件存储设备,我不必和其他任何人分享我的资源。这里的软件自相一致,很容易使用。你为何不辞去现在的工作,加入到我这里来呢?”
 
于是,主机程序员开始向他的这位朋友描绘他的系统:“主机就像一位陷入沉思的圣人一样,端坐在数据中心。它的磁盘器首尾声相连,就如同机器的海洋。这里的软件既像钻石一样能多面反射光芒,又像原始丛林一样复杂难测。这里的程序,各具特色,它们像湍急的河流穿过系统。这就是我乐于此处的原因。
 
微电脑程序员听到这里,陷入了沉默。但这两位程序员至死都保持着友谊。
8.4
在去硅谷的路上,硬件碰上了软件。软件说:“你是阴,我是阳。如果我们携手同路,我们将闻名于世,并能赚大笔的钱。”于是,这一对阴和阳便一同往前走,想着怎么征服世界。
 
不一会儿,他们遇到了固件(firmware,硬件和软件结合在一起的部件,如IC卡--译注),他衣衫褴褛,手里拄着根带刺的拐杖,蹒跚地走着。固件对他们说:“道存在于阴、阳之外。它默默无闻,静如止水。它不追求名誉,所以没人知道它的存在;它不追求财富,因其自身完整圆满。它存在于空间和时间之外。”
 
软件和硬件,自觉惭愧,掉头回家去了。
posted @ 2006-11-28 00:22 Javaphua 阅读(177) | 评论 (0)编辑 收藏

关于javascript对cookie的设置与读取

<script>
//设置Cookie
  function setCookie(va){
       var expires = new Date();
      expires.setTime(expires.getTime() + 12 * 30 * 24 * 60 * 60 * 1000);
      /*   一年 x 一个月当作 30 天 x 一天 24 小时
      x 一小时 60 分 x 一分 60 秒 x 一秒 1000 毫秒 */
       document.cookie=va+';expires='+expires.toGMTString();
  }
  //读取Cookie
  function readCookie(name){
  var cookieValue = "";
  var search = name + "=";
  if(document.cookie.length > 0)  {
    offset = document.cookie.indexOf(search);
    if (offset != -1)    {
      offset += search.length;
      end = document.cookie.indexOf(";", offset);
      if (end == -1) end = document.cookie.length;
      cookieValue = unescape(document.cookie.substring(offset, end))
    }
  }
  return cookieValue;
}

setCookie("user=123");
alert(readCookie('user'));
</script>
posted @ 2006-11-11 19:58 Javaphua 阅读(328) | 评论 (0)编辑 收藏

        第一次给客户安装正版oracle 10g数据库,配套很多,大概有十多张盘,但真正就只用了两张,一张还是属于oracle工具类,远没有盗版集成的方便。
        本人英文不是太好,找了半天才找到安装的盘,安装很顺利,但这种顺序让我产生了一个疑问,怎么我没有输序列号就安装过去了,郁闷,不知道哪位朋友能否告诉我一下,正版的不需要序列号就可以安装吗?还是安装序列号已经集成在盘内了,无解,也是第一次安装,只好向各位请教一下?
posted @ 2006-10-28 20:42 Javaphua 阅读(1305) | 评论 (6)编辑 收藏

程序员每天该做的事

1、总结自己一天任务的完成情况
最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多

2、考虑自己明天应该做的主要工作
把明天要做的事情列出来,并按照优先级排列,第二天应该把自己效率最高的时间分配给最重要的工作

3、考虑自己一天工作中失误的地方,并想出避免下一次再犯的方法
出错不要紧,最重要的是不要重复犯相同的错误,那是愚蠢

4、考虑自己一天工作完成的质量和效率能否还能提高
一天只提高1%,365天你的效率就能提高多少倍你知道吗? (1+0.01)^365 = 37 倍

5、看一个有用的新闻网站或读一张有用的报纸,了解业界动态
闭门造车是不行的,了解一下别人都在做什么,对自己能带来很多启示

6、记住一位同事的名字及其特点
你认识公司的所有同事吗?你了解他们吗?

7、清理自己的代码
今天完成的代码,把中间的调试信息,测试代码清理掉,按照编码风格整理好,注释都写好了吗?

8、清理自己的桌面
当日事当日毕,保持清洁干劲的桌面才能让你工作时不分心,程序员特别要把电脑的桌面清理干净

程序员每周该做的事
1、向你的老板汇报一次工作
让你的老板知道你在做什么,这很重要。可以口头、书面、邮件,看你老板的工作方式而定

2、进行一次自我总结(非正式)
这周之内自己表现得怎么样?该加分还是扣分?

3、制定下周计划
把下周要做的事情列出来,一样要分清楚优先级

4、整理自己的文件夹、书柜和电脑文件
把桌面以外的地方也要清理干净,电脑的文件夹,收到的邮件,把过时的垃圾全部清理掉

5、与一个非公司的朋友沟通
它山之石,可以攻玉

6、看一本杂志
找一本适合自己的专业杂志

7、纠正自己或同事一个细节上的不正确做法
《细节决定成败》看过了吗?没看过强烈建议先看看

程序员每月该做的事
1、至少和一个同事一起吃饭或喝茶
不光了解自己工作伙伴的工作,还要了解他们的生活

2、自我考核一次
相对正式地考核自己一下,你对得起这个月的工资吗?

3、对你的同事考核一次
你的同事表现怎么样?哪些人值得学习,哪些人需要帮助?

3、制定下月的计划,确定下月的工作重点

4、总结自己工作质量改进状况
自己的质量提高了多少?

5、有针对性地对一项工作指标做深入地分析并得出改进的方案
可以是对自己的,也可以是对公司的,一定要深入地分析后拿出自己的观点来。要想在老板面前说得上话,做的成事,工作上功夫要做足。

6、与老板沟通一次
最好是面对面地沟通,好好表现一下自己,虚心听取老板的意见,更重要的是要了解老板当前关心的重点

程序员每年该做的事
1、年终总结
每个公司都会做的事情,但你真正认真地总结过自己吗?

2、兑现给自己、给家人的承诺
给老婆、儿子的新年礼物买了没有?给自己的呢?

3、下年度工作规划
好好想想自己明年的发展目标,争取升职/加薪、跳槽还是自己出来干?

4、掌握一项新技术
至少是一项,作为程序员一年要是一项新技术都学不到手,那就一定会被淘汰。
掌握可不是看本书就行的,要真正懂得应用,最好你能够写一篇教程发表到你的blog

5、推出一种新产品
可以是一个真正的产品,也可以只是一个类库,只要是你创造的东西就行,让别人使用它,也为世界作点贡献。当然如果真的很有价值,收点注册费也是应该的

6、与父母团聚一次
常回家看看,常回家看看

posted @ 2006-10-24 09:33 Javaphua 阅读(333) | 评论 (0)编辑 收藏

xdb占用8080端口的问题

关键词oracle                                          

原因:
Oracle 9i开始,创建数据库时默认包含了XDB特性。一旦启动了数据库和Listener,Oracle XDB的http服务就占用8080端口,刚好和JBoss、Tomcat等默认端口冲突。因此,必须有一个做出更改。改Tomcat等容易,只是一时不知道怎么改XDB的配置。

在Google上搜索一下,找到了答案。原来Oracle XDB的端口设置不在配置文件中,而是在数据库里。


首先存入列代码到C:盘根目录中文件名取(更改Oracle9.2的8080端口.SQL):

call dbms_xdb.cfg_update(updateXML(
            dbms_xdb.cfg_get()
          , '/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()'
          , 8081));

call dbms_xdb.cfg_update(updateXML(
         dbms_xdb.cfg_get()
       , '/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()'
       , 2111));

COMMIT;

EXEC dbms_xdb.cfg_refresh;


然后,在“运行”中键入cmd进入命令行模式:



执行:
sqlplus /nolog
conn SYS/(SYS用户的密码)SYS@(全局数据库名)orcl as sysdba;
@c:\OraDB\更改Oracle9.2的8080端口.SQL
exit

另:这个方法在我机子上试了好像不行,也许是我操作有误吧。又google了一下发现了一个简单的办法:进入 database configuration assistant ,选“在数据库中配置数据库选项”,选择你要修改的数据库—>出现“数据库特性”标签,点“标准数据库功能”,再点“自定义”按钮,看到了配置端口的内容了吧,然后就不用我多说了。

posted @ 2006-10-19 20:03 Javaphua 阅读(936) | 评论 (0)编辑 收藏

正则表达式(经典) "^\d+$"  //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$"  //正整数 "^\d+$"  //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$"  //正整数 "^((-\d+)|(0+))$"  //非正整数(负整数 + 0) "^-[0-9]*[1-9][0-9]*$"  //负整数 "^-?\d+$"    //整数 "^\d+(\.\d+)?$"  //非负浮点数(正浮点数 + 0) "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数 "^((-\d+(\.\d+)?)|(0+(\.0+)?))$"  //非正浮点数(负浮点数 + 0) "^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数 "^(-?\d+)(\.\d+)?$"  //浮点数 "^[A-Za-z]+$"  //由26个英文字母组成的字符串 "^[A-Z]+$"  //由26个英文字母的大写组成的字符串 "^[a-z]+$"  //由26个英文字母的小写组成的字符串 "^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串 "^\w+$"  //由数字、26个英文字母或者下划线组成的字符串 "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址 "^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" ( 2006年09月28日, 05:24:42 下午 CST )Permalink留言 [0]

使用AJAX的Struts验证框架   实时数据验证是AJAX技术的一大优势之一。通过应用此技术,struts验证框架将增强struts MVC,并使Web应用程序更接近于桌面应用程序。  此验证框架用于验证字段。有许多在Web应用程序上进行验证的方法。这些方法可分为两类:服务器端方法和客户端方法。Struts验证框架是面向基于Java的Web应用环境的最佳框架之一。它能够配置应用程序,方法是使用服务器端验证和错误消息,此错误消息在处理请求时呈现在调用的验证流程上,它还能够进行客户端验证,方法是使用请求页面上呈现的JavaScript。  AJAX是一种JavaScript技术,它能够异步呼叫服务器并获取XML文档,这类文档最近非常流行。其用途之一就是实时数据验证。  本文关注使用AJAX增强现有struts验证框架。必须开发几个组件(例如控制器),以选择验证框架,并呈现特定格式的消息(用于客户端)和标签库(处理错误消息呈现)。必要条件  需要一个具有Eclipse和Tomcat应用服务器的Windows系统。请确定已在操作系统中注册了MSXML 3.0 ActiveX对象。还需要Struts库(http://struts.apache.org)和JDOM库(www.jdom.org),以用于XML开发(参见图1和图2)。 服务器端场景 StrustsActionServlet   我们必须扩展来自org.apache.struts.action.ActionServlet的类,以获得servletMapping变量,此变量存储关于如何针对动作类将该扩展格式化为浏览器地址形式的动作路径的信息。当添加代码时,我们必须将web.xml配置为应用服务器的Web应用程序描述符。  web.xml配置如下:  ... actionnet.sf.struts.servlet.StrutsActionServlet ... action*.do... StrutsActionServlet Java代码如下: public class StrutsActionServlet extends the ActionServlet. { public String getServletMapping() { return this.servletMapping; } } AjaxValidationRequestProcessor   要在第一步中支持现有Struts框架,我们必须扩展来自Struts软件包的RequestProcessor。我们必须定制化此请求处理器,因为我们必须判别将如何进行验证(通过使用现有Struts框架,还是利用AJAX概念),还因为我们将在服务器和客户端之间制订一个有关如何解释消息的契约。在消息呈现方面,我们将使用XML格式,这是一种很好的媒体消息传递格式。我们将应用的XML格式的定义是:  XML Format   XML Format MessageValue 描述 • Identity是客户端JavaScript用于了解消息将被置于何处的ID。 • Description是在服务器端呈现错误消息后的结果。   首先我们需要在继续流程映射之前,从Web描述符获得servlet映射配置。调用此流程后,应用程序将准备表单实例,此实例继承自AjaxForm类。这一处理管理AJAX验证,并且应进行检查以确定来自客户端的请求没有使用struts验证框架。其他在请求过程中执行的流程是流程填充(用于收集客户端发送到动作表单的信息)和流程验证(通过使用现有Struts验证框架中已经存在于AjaxValidationRequestProcessor的父类TilesRequestProcessor中的方法)。  来自TilesRequestProcessor的验证流程将调用所有基于struts验证框架的验证,并将动作错误存储到请求。我们需要仔细分析动作错误,并生成XML消息验证,此验证将被发送到客户端。因为我们希望更改支持验证的行为方式,所以验证流程应检查所用的验证框架的指示器(参见图3)。   使用JDOM作为处理引擎,生成XML消息。如图4所示,如果流程验证被调用,且验证框架的条件等同于AJAX验证框架,则流程将继续填充错误消息并构建XML消息验证。 ErrorMessageHandler   该类处理XML消息生成器的功能。此Java类将构建基于identity和description属性的XML消息。调用方调用了buildXMLMessage之后,它将准备文档并设置XML消息的根元素。此类还具有一个addNextXMLMessage函数,以将更多验证消息添加到XML(参见清单1)。   清单1   ... public void buildXMLMessage() throws ParserConfigurationException { // initiate document builder to prepare the media of XML Message this.rootElement = new Element(CONSTANT_MESSAGE); addNextXMLMessage(); } ... public void addNextXMLMessage() throws ParserConfigurationException { // creating the xml message based on format above Element identityElement = new Element(CONSTANT_IDENTITY); identityElement.setAttribute(CONSTANT_NAME, this.identity); Element descriptionElement = new Element(CONSTANT_DESCRIPTION); descriptionElement.addContent(this.description); identityElement.addContent(descriptionElement); rootElement.addContent(identityElement); }   此流程方法将响应的内容类型设置为“text/xml”,并将XML消息作为字符串发送。AjaxValidationRequestProcessor代码上的流程函数如清单2所示。   清单2   public void process(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { if ( request.getParameter(CONSTANT_VALIDATION_FRAMEWORK_ARG) != null ) { ... this.processValidate(req, resp, form, mapping); response.setContentType(CONSTANT_XML_CONTENT_TYPE); response.getWriter().write(sbXMLMessage.toString()); response.flushBuffer(); } } else { super.process(req, resp); } } processValidation方法将填充  动作错误,并基于面向客户端的XML格式契约构建消息。AjaxValidationRequestProcessor代码上的processValidation函数如下所示:  ... ActionErrors errors = (ActionErrors) request.getAttribute(Globals.ERROR_KEY); Locale locale = (Locale) request.getAttribute(Globals.LOCALE_KEY); generateXMLMessage(errors, identity, locale, sbXMLMessage); ... 客户端场景构建标签库组件 • AjaxJavaScriptLibraryTag:此标签库组件在客户端呈现JavaScript功能,以实现基本XMLHTTP控制器功能。 • AjaxErrorHtmlRenderTag:此标签库组件在JSP页面呈现错误消息区域。 配置标签库定义  开发出标签库组件之后,我们需要配置清单3中显示的标签库tld文件。   清单3   1.01.1ajaxLiblibrarynet.sf.ajax.taglib.AjaxJavaScriptLibrary JSPerrornet.sf.ajax.taglib.AjaxErrorHtmlRender JSPpropertytruetrueeventtruetrue构建JSP和Struts配置  要模拟验证处理的结果,我们首先需要构建呈现层,方法是合并我们已经构建的标签库。在此例中,我试图给出一个示例验证(通过使用来自Struts的验证规则组件)以及来自表单本身的验证。准备五个JSP页面下的文本框。第一个到第四个文本框使用验证规则配置,第五个文本框使用来自动作表单的验证流程。除此之外,我们还需要一个提交按钮,以在提交表单后模拟它,现有的struts验证仍在没有AJAX的情况下工作。用户界面外观如图5所示。 构建动作和动作表单  为获得Struts动作,我们转到已经构建的JSP。此动作代码如下所示:  public ActionForward execute(...) { return mapping.findForward("success"); }   如果输入为空,则此动作表单代码将验证requiredText属性。请记住,要从AjaxForm类扩展此表单。动作表单的验证方法如下所示:  public ActionErrors validate(...) { ActionErrors errors = new ActionErrors(); if (StringUtils.isEmpty(this.requiredText)) { errors.add("requiredText", new ActionError("error.required.input")); } request.setAttribute(Globals.ERROR_KEY, errors); } 应用Struts验证规则  配置Struts验证规则(例如最小长度、最大长度、电子邮件和模式文本)将应用于客户端的输入对象,且配置与清单4类似。   清单4   mask^[0-9]{3}-[0-9]{2}$minlength5maxlength5验证处理流  首先客户端会初始化XMLHTTP组件以执行到服务器的请求,然后在用户触发器开始构建时,URL参数将被发送到服务器。在完成构建参数后,客户端会连接oneadystatechange XMLHTTP事件,以侦听来自服务器端的响应。收到响应后,客户端会开始分析XML验证消息,并将消息放置到正确的区域(参见图6)。   如果请求被服务器接受,则服务器会开始检查AJAX验证条件的参数,并处理验证。完成之后,将从生成的错误对象过滤出与用户输入对象相关的特定错误。在过滤流程完成之后,将生成XML消息,并发送回客户端(参见图7)。 结束语  在本文中,我们构建了一个控制器,它能够接收来自客户端的异步请求,并合并struts验证流程以产生动作错误对象。在产生错误对象并生成作为应答返回客户端以指示错误消息的XML消息之后,将对被验证的特定输入对象进行过滤

posted @ 2006-10-09 00:29 Javaphua 阅读(370) | 评论 (0)编辑 收藏

每页都有的表头和打印分页

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<style>
@media print{
INPUT {display:none}
}
</style>
</head>

<body>

<TABLE border="0" style="font-size:9pt;" width="300px" align="center">
<THEAD style="display:table-header-group;font-weight:bold">
<TR><TD colspan="2" align="center" style="font-weight:bold;border:3px double red">每页都有的表头</TD></TR>
</THEAD>
<TBODY style="text-align:center"">
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR style="page-break-after:always;"><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR style="page-break-after:always;"><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR><TD>表格内容</TD><TD>表格内容</TD></TR>
<TR style="page-break-after:always;"><TD>表格内容</TD><TD>表格内容</TD></TR>
</TBODY>
<TFOOT style="display:table-footer-group;font-weight:bold">
<TR>
<TD colspan="2" align="center" style="font-weight:bold;border:3px double blue">每页都有的表尾</TD>
</TR>
</TFOOT>
</TABLE>
<input type=button value=" 打  印 " onclick=javascript:window.print()>
</body>
</html>


 

在 WEB 中实现打印分页

 

要动态生成一个页面,ASP从数据库中生成, 要根据具体情况分页打印,请问改怎么实现分页打印?

解答:

page-break-after版本:CSS2   兼容性:IE4+ 继承性:无 

语法:page-break-after  :  auto    |  always    |  avoid    |  left    |  right    |  null 

参数:

auto: 假如需要在对象之后插入页分割符

always: 始终在对象之后插入页分割符

avoid:避免在对象后面插入页分割符

left:在对象后面插入页分割符直到它到达一个空白的左页边

right: 在对象后面插入页分割符直到它到达一个空白的右页边

null:空值。IE5用来取消页分割符设置

说明:

检索或设置对象后出现的页分割符。IE5仅支持always值和空白值(null)。

在IE4中此属性不作用于br对象,但是IE5作用。

对应的脚本特性为pageBreakAfter。请参阅我编写的其他书目。

示例:

p  {  page-break-after:  always;}   


另一实例:
<HTML>
<HEAD>
<TITLE>print</TITLE>
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<style>
/**//*
 *    打印相关
*/
@media print
{}{
    .notprint
    {
        display:none;
    }
    .PageNext
    {}{
        page-break-after:always;
    }    
}

@media screen
{}{
    .notprint
    {
        display:inline;
        cursor:hand;
    }
}

.text1
{}{
    width: 120px;
    overflow: hidden;
    text-overflow:ellipsis;
}
.text2
{}{
    width: 80px;
    overflow: hidden;
    text-overflow:ellipsis;
}
</style>

<script language="javascript">
<!--

/**//* 
**    ================================================================================================== 
**    类名:CLASS_PRINT 
**    功能:打印分页 
**    示例: 
    --------------------------------------------------------------------------------------------------- 
 
        var pp = new CLASS_PRINT();

        window.onload = function(){
            pp.header = document.getElementById("tabHeader");
            pp.content= document.getElementById("tabDetail");
            pp.footer = document.getElementById("tabFooter");

            pp.hideCols("5,7");   
            pp.hideRows("3,15");
            pp.pageSize = 10;   
        }

        <BODY onbeforeprint="pp.beforePrint()" onafterprint="pp.afterPrint()">

 
    --------------------------------------------------------------------------------------------------- 
**    作者:ttyp 
**    邮件:ttyp@21cn.com 
**    日期:2005-12-13 
**    ================================================================================================== 
*/
function CLASS_PRINT()
{
    this.header        = null;
    this.content    = null;
    this.footer        = null;
    this.board        = null;
    this.pageSize    = 10;

    var me            = this;

    //哈希表类
    function Hashtable()
    {
        this._hash        = new Object();
        this.add        = function(key,value){
                            if(typeof(key)!="undefined"){
                                if(this.contains(key)==false){
                                    this._hash[key]=typeof(value)=="undefined"?null:value;
                                    return true;
                                } else {
                                    return false;
                                }
                            } else {
                                return false;
                            }
                        }
        this.remove        = function(key){delete this._hash[key];}
        this.count        = function(){var i=0;for(var k in this._hash){i++;} return i;}
        this.items        = function(key){return this._hash[key];}
        this.contains    = function(key){return typeof(this._hash[key])!="undefined";}
        this.clear        = function(){for(var k in this._hash){delete this._hash[k];}}

    }

    //字符串转换为哈希表
    this.str2hashtable = function(key,cs){
       
            var _key    = key.split(/,/g);
            var _hash    = new Hashtable();
            var _cs        = true;

       
            if(typeof(cs)=="undefined"||cs==null){
                _cs = true;
            } else {
                _cs = cs;
            }

            for(var i in _key){
                if(_cs){
                    _hash.add(_key[i]);
                } else {
                    _hash.add((_key[i]+"").toLowerCase());
                }

            }
            return _hash;
        }

    this._hideCols    = this.str2hashtable("");
    this._hideRows    = this.str2hashtable("");

    this.hideCols = function(cols){
        me._hideCols = me.str2hashtable(cols)
    }

    this.isHideCols = function(val){   
        return    me._hideCols.contains(val);
    }

    this.hideRows = function(rows){
        me._hideRows = me.str2hashtable(rows)
    }

    this.isHideRows = function(val){   
        return    me._hideRows.contains(val);
    }

    this.afterPrint = function()
    {
        var table = me.content;       
       
        if(typeof(me.board)=="undefined"||me.board==null){       
            me.board = document.getElementById("divPrint");
            if(typeof(me.board)=="undefined"||me.board==null){
                me.board = document.createElement("div");
                document.body.appendChild(me.board);
            }
        }

        if(typeof(table)!="undefined"){
            for(var i =0;i<table.rows.length;i++){
                var tr = table.rows[i];
                for(var j=0;j<tr.cells.length;j++){
                    if(me.isHideCols(j)){
                        tr.cells[j].style.display = "";
                    }
                }
            }
        }

        me.content.style.display    = '';
        me.header.style.display        = '';
        me.footer.style.display        = '';
        me.board.innerHTML            = '';

    }

    this.beforePrint = function(){

        var table = me.content;   

        if(typeof(me.board)=="undefined"||me.board==null){       
            me.board = document.getElementById("divPrint");
            if(typeof(me.board)=="undefined"||me.board==null){
                me.board = document.createElement("div");
                document.body.appendChild(me.board);
            }
        }


        if(typeof(table)!="undefined"&&this.hideCols.length>0){       
           
            for(var i =0;i<table.rows.length;i++){
                var tr = table.rows[i];
                for(var j=0;j<tr.cells.length;j++){
                    if(me.isHideCols(j)){                   
                        tr.cells[j].style.display = "none";
                    }
                }
            }
        }
   
       
        ///开始分页   
        var pageSize = this.pageSize;
       
        var head    = me.header;
        var foot    = me.footer;
       
        var page    = new Array();
        var rows    = "";   
        var rowIndex= 1;

        var cp        = 0;
        var tp        = 0;
       
       
        for(i=1;i<table.rows.length;i++){               
            if(this.isHideRows(i)==false){
                if((((rowIndex-1)%pageSize)==0&&rowIndex>1)||i==table.rows.length){                               
                    page[page.length] = getTable(head,table,rows,foot);
                                                   
                    rows    = getOuterHTML(table.rows[i]) + "\n" ;
                    rowIndex= 2;
                                                                           
                } else {
                    rows    += getOuterHTML(table.rows[i]) + "\n";
                    rowIndex++;
                }
            }
        }
       
        if(rows.length>0){
            page[page.length] = getTable(head,table,rows,foot);
        }

        tp = page.length;

        for(var i=0;i<page.length;i++){
            page[i] = page[i].replace(/\<!--ct-->/g,(i+1)+'/' + tp).replace(/\<!--cp--\>/g,i+1).replace(/\<!--tp--\>/g,tp);
        }
       
                   
        head.style.display        = 'none';
        foot.style.display        = 'none';
        table.style.display        = 'none';
       
        me.board.innerHTML = page.join("");
    }

function getOuterHTML (node) {

    if(typeof(node)!="undefined"&&typeof(node.outerHTML)!="undefined"){
        return node.outerHTML;
    }

    var emptyElements = {
      HR: true, BR: true, IMG: true, INPUT: true
    };
    var specialElements = {
      TEXTAREA: true
    };

    var html = '';
    switch (node.nodeType){
        case Node.ELEMENT_NODE:
            html += '<';
            html += node.nodeName;
            if (!specialElements[node.nodeName]) {
                for (var a = 0; a < node.attributes.length; a++)
                    html += ' ' + node.attributes[a].nodeName.toUpperCase() + '="' + node.attributes[a].nodeValue + '"';
                html += '>';
                if (!emptyElements[node.nodeName]){
                    html += node.innerHTML;
                    html += '<\/' + node.nodeName + '>';
                }
            }
            else
                switch (node.nodeName){
                    case 'TEXTAREA':
                        var content = '';
                        for (var a = 0; a < node.attributes.length; a++)
                            if (node.attributes[a].nodeName.toLowerCase() != 'value')
                                html += ' ' + node.attributes[a].nodeName.toUpperCase() + '="' + node.attributes[a].nodeValue + '"';
                            else
                                content = node.attributes[a].nodeValue;
                            html += '>';
                            html += content;
                            html += '<\/' + node.nodeName + '>';
                        break;
                }
            break;
        case Node.TEXT_NODE:
            html += node.nodeValue;
            break;
        case Node.COMMENT_NODE:
            html += '<!' + '--' + node.nodeValue + '--' + '>';
            break;
    }
    return html;
}

    function getTable(header,table,content,footer){
        var htm = "";

        if(typeof(header)!="undefined"){
            htm += getOuterHTML(header);
        }

        if(typeof(table)!="undefined"){       
            htm += "\n<" + table.tagName;
           
            for(var i =0;i<table.attributes.length;i++){
                if(table.attributes[i].specified){
                    if(table.attributes[i].name=="style")
                        htm += " style='" + table.style.cssText + "'";
                    else
                        htm += " " + table.attributes[i].nodeName + "='" + table.attributes[i].nodeValue + "'";
                }       
            }   
           
            if(table.rows.length>0){
                htm += ">\n" + getOuterHTML(table.rows[0]) + content + "</" + table.tagName + ">";
            } else {
                htm += ">\n" + content + "</" + table.tagName + ">\n";
            }       
        }

        if(typeof(footer)!="undefined"){
            htm += getOuterHTML(footer);
        }

        htm += "\n<div class='pageNext'></div>"
       
        return htm;
    }

    if(!window.attachEvent){
        window.attachEvent = function(){window.addEventListener(arguments[0].substr(2),arguments[1],arguments[2]);}
    }
}


var pp = new CLASS_PRINT();

window.onload = function()
{

    pp.header = document.getElementById("tabHeader");
    pp.content= document.getElementById("tabDetail");
    pp.footer = document.getElementById("tabFooter");

    pp.hideCols("5,7");   
    pp.hideRows("3,15");
    pp.pageSize = 10;   
}

//-->
</script>
</HEAD>
<BODY onbeforeprint="pp.beforePrint()" onafterprint="pp.afterPrint()">

<table border=0 width="95%" align=center id="tabHeader">
    <tr>
        <td align="center"><font size='6' face='楷体_gb2312'>元件列表</font></td>
    </tr>
    <tr>
        <td><strong>日期:2005年12月12日</strong></td>
    </tr>
</table>
<table border=1 width="95%" style="border-collapse:collapse;" align=center cellpadding=3 id="tabDetail">
    <tr bgcolor='#e8f4ff'>
        <td align="center" width="35">序号</td>
        <td width="160">产品名称</td>
        <td>规格型号</td>
        <td align="center">品牌</td>
        <td align="right">数量</td>
        <td width="125">供应商</td>
        <td align="right">实际数量</td>
        <td align="center">包装</td>
        <td align="center">需用日期</td>
    </tr>

    <tr>
    <td align="center">1</td>
    <td><span class="text2"><nobr>
    贴片电路
    </nobr></span>
    </td>
    <td>
    <span class="text1" title='ADE7755 63 7'>
    <nobr>
    ADE7755ARS
    </nobr></span>
    </td>
    <td align="center">ADI</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1" title ='世健国际贸易(上海)有限公司'><nobr>世健国际贸易(上海)有限公司</nobr></span></td>
    <td align="right">1003</td>
    <td align="center">59</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">2
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电容
    </nobr></span>
    </td>
    <td>
   
    <span class="text1" title='CC0805 0.1μ 168 7'>
    <nobr>
    C2012X7R1H104KT
    </nobr></span>
    </td>
    <td align="center">TDK</td>
    <td align="right">8000</td>
    <td width="125"><span class="text1" title ='南京商络电子有限公司'><nobr>南京商络电子有限公司</nobr></span></td>
    <td align="right">8000</td>
    <td align="center">4000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">3
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电容
    </nobr></span>
    </td>
    <td>
   
    <span class="text1" title='CC0805 20p 162 7'>
    <nobr>
    C2012COG1H200JT
    </nobr></span>
    </td>
    <td align="center">TDK</td>
    <td align="right">2000</td>
    <td width="125"><span class="text1" title ='南京商络电子有限公司'><nobr>南京商络电子有限公司</nobr></span></td>
    <td align="right">4000</td>
    <td align="center">4000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">4
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电容
    </nobr></span>
    </td>
    <td>
   
    <span class="text1" title='CC0805 33N 765 7'>
    <nobr>
    C2012X7R1H333KT
    </nobr></span>
    </td>
    <td align="center">TDK</td>
    <td align="right">4000</td>
    <td width="125"><span class="text1" title ='南京商络电子有限公司'><nobr>南京商络电子有限公司</nobr></span></td>
    <td align="right">4000</td>
    <td align="center">4000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">5
    </td>
    <td>
    <span class="text2"><nobr>
    压敏电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1" title='MY20K681 186 7'>
    <nobr>
    GND20D681K
    </nobr></span>
    </td>
    <td align="center">中普</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1" title ='苏州中普电子有限公司'><nobr>苏州中普电子有限公司</nobr></span></td>
    <td align="right">1000</td>
    <td align="center">1000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">6
    </td>
    <td>
    <span class="text2"><nobr>
    晶振
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    HC-49U/S 3.579545MHz 20pf 带垫片
    </nobr></span>
    </td>
    <td align="center">海创</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>武汉海创电子有限公司</nobr></span></td>
    <td align="right">1000</td>
    <td align="center">200</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">7
    </td>
    <td>
    <span class="text2"><nobr>
    安规电容
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    275V-X2-0.47μF
    </nobr></span>
    </td>
    <td align="center">昱电</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海昱电电子有限公司</nobr></span></td>
    <td align="right">1000</td>
    <td align="center">1000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">8
    </td>
    <td>
    <span class="text2"><nobr>
    电解电容
    </nobr></span>
    </td>
    <td>

    <span class="text1">
    <nobr>
    CD112 16V 33μF
    </nobr></span>
    </td>
    <td align="center">Samyoung</td>
    <td align="right">2000</td>
    <td width="125"><span class="text1"><nobr>上海文得贸易有限公司</nobr></span></td>
    <td align="right">2000</td>
    <td align="center">2000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">9
    </td>
    <td>
    <span class="text2"><nobr>
    电解电容
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    CD112S 16V 220μF
    </nobr></span>
    </td>
    <td align="center">Samyoung</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海文得贸易有限公司</nobr></span></td>
    <td align="right">2000</td>
    <td align="center">2000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">10
    </td>
    <td>
    <span class="text2"><nobr>
    电解电容
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    CD112S 35V 470μF
    </nobr></span>
    </td>
    <td align="center">Samyoung</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海文得贸易有限公司</nobr></span></td>
    <td align="right">1000</td>
    <td align="center">1000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">11
    </td>
    <td>
    <span class="text2"><nobr>
    插件电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RSF2BJ 470Ω
    </nobr></span>
    </td>
    <td align="center">KOA</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海凡元电子有限公司</nobr></span></td>
    <td align="right">1000</td>
    <td align="center">100</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">12
    </td>
    <td>
    <span class="text2"><nobr>
    发光二极管
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    L-314LRC-A-SS
    </nobr></span>
    </td>
    <td align="center">HUADING</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海沪鼎电子有限公司</nobr></span></td>
    <td align="right">1000</td>
    <td align="center">1000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">13
    </td>
    <td>
    <span class="text2"><nobr>
    插件二、三极管
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    1N4744A
    </nobr></span>
    </td>
    <td align="center">MCC</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>励智电子(上海)有限公司</nobr></span></td>

    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">14
    </td>
    <td>
    <span class="text2"><nobr>
    磁珠
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    B62
    </nobr></span>
    </td>
    <td align="center">JONES</td>
    <td align="right">2000</td>
    <td width="125"><span class="text1"><nobr>北京中石伟业技术有限公司</nobr></span></td>

    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">15
    </td>
    <td>
    <span class="text2"><nobr>
    晶振
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    CFS206 32.768kHz 20ppm/12.5pf
    </nobr></span>
    </td>
    <td align="center">CITIZEN</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海创邦国际贸易有限公司</nobr></span></td>

    <td align="right">1000</td>
    <td align="center">1000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">16
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RC0805JR-071K2
    </nobr></span>
    </td>
    <td align="center">YAGEO</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海衡谦贸易有限公司</nobr></span></td>

    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">17
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RC0805FR-071K2
    </nobr></span>
    </td>
    <td align="center">YAGEO</td>
    <td align="right">2000</td>
    <td width="125"><span class="text1"><nobr>上海衡谦贸易有限公司</nobr></span></td>

    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">18
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RC0805JR-0710R
    </nobr></span>
    </td>
    <td align="center">YAGEO</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海衡谦贸易有限公司</nobr></span></td>
    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">19
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RC0805JR-0710K
    </nobr></span>
    </td>
    <td align="center">YAGEO</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海衡谦贸易有限公司</nobr></span></td>

    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">20
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RC0805JR-07150K
    </nobr></span>
    </td>
    <td align="center">YAGEO</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海衡谦贸易有限公司</nobr></span></td>

    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">21
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RC0805FR-071K
    </nobr></span>
    </td>
    <td align="center">YAGEO</td>
    <td align="right">2000</td>
    <td width="125"><span class="text1"><nobr>上海衡谦贸易有限公司</nobr></span></td>

    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">22
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RC0805JR-072K4
    </nobr></span>
    </td>
    <td align="center">YAGEO</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海衡谦贸易有限公司</nobr></span></td>

    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">23
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RC0805JR-0720K
    </nobr></span>
    </td>
    <td align="center">YAGEO</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海衡谦贸易有限公司</nobr></span></td>

    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">24
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RC0805JR-072K
    </nobr></span>
    </td>
    <td align="center">YAGEO</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海衡谦贸易有限公司</nobr></span></td>

    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">25
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RC0805JR-07390K
    </nobr></span>
    </td>
    <td align="center">YAGEO</td>
    <td align="right">3000</td>
    <td width="125"><span class="text1"><nobr>上海衡谦贸易有限公司</nobr></span></td>
    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">26
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RC0805JR-0739K
    </nobr></span>
    </td>
    <td align="center">YAGEO</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海衡谦贸易有限公司</nobr></span></td>

    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

    <tr>
    <td align="center">27
    </td>
    <td>
    <span class="text2"><nobr>
    贴片电阻
    </nobr></span>
    </td>
    <td>
   
    <span class="text1">
    <nobr>
    RC0805JR-074K7
    </nobr></span>
    </td>
    <td align="center">YAGEO</td>
    <td align="right">1000</td>
    <td width="125"><span class="text1"><nobr>上海衡谦贸易有限公司</nobr></span></td>
    <td align="right">5000</td>
    <td align="center">5000</td>
    <td align="center">2005-11-04</td>
    </tr>

</table>
<table width="95%" border=0 id="tabFooter" align=center cellpadding=4>
    <tr>
        <td><!--ct--></td><td align=right>上海市XXX有限公司</td>
    </tr>
</table>
<div id="divPrint"></div>
<table width="95%" align=center>
    <tr>
        <td align=right>
            <input type=button id="bp"  onclick="pp.beforePrint();this.disabled = true;document.getElementById('ap').disabled = false;" value="打印前" style="border:1px solid #000000"> <input id="ap" type=button onclick="pp.afterPrint();this.disabled = true;document.getElementById('bp').disabled = false;" value="打印后" style="border:1px solid #000000" disabled=true> <input type=button value='打印' onclick="window.print()" style="border:1px solid #000000">
        </td>
    </tr>
</table>
</BODY>
</HTML>

posted @ 2006-09-06 12:03 Javaphua 阅读(374) | 评论 (1)编辑 收藏

     摘要: 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture();  event.srcElement.releaseCapture();  事件按键 ...  阅读全文
posted @ 2006-09-02 16:25 Javaphua 阅读(329) | 评论 (0)编辑 收藏

中文字符编码简介
1 GB2312-80

GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集——基本集》,由国家标准总局发布,1981年5月1日实施,通行于大陆。新加坡等地也使用此编码。

GB2312收录简化汉字及符号、字母、日文假名等共7445个图形字符,其中汉字占6763个。GB2312规定“对任意一个图形字符都采用两个字节表示,每个字节均采用七位编码表示”,习惯上称第一个字节为“高字节”,第二个字节为“低字节”。

GB2312将代码表分为94个区,对应第一字节;每个区94个位,对应第二字节,两个字节的值分别为区号值和位号值加32(2OH),因此也称为区位码。01-09区为符号、数字区,16-87区为汉字区,10-15区、88-94区是有待进一步标准化的空白区。GB2312将收录的汉字分成两级:第一级是常用汉字计3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。故而GB2312最多能表示6763个汉字。

GB2312的编码范围为2121H-777EH,与ASCII有重叠,通行方法是将GB码两个字节的最高位置1以示区别。

2 GBK

GB2312-80仅收汉字6763个,这大大少于现有汉字,随着时间推移及汉字文化的不断延伸推广,有些原来很少用的字,现在变成了常用字,例如:朱镕基的“镕”字,未收入GB2312-80,现在大陆的报业出刊只得使用(金+容)、(金容)、(左金右容)等来表示,形式不一而同,这使得表示、存储、输入、处理都非常不方便,对于搜索引擎等软件的构造来说也不是好消息,而且这种表示没有统一标准。从我们对人民日报98年数据的处理过程中,得出这样的经验:回填外字最困难的就是如何得到这种表示方法的集合。

为了解决这些问题,以及配合UNICODE的实施,全国信息技术化技术委员会于1995年12月1日《汉字内码扩展规范》。GBK向下与GB2312 完全兼容,向上支持ISO 10646国际标准,在前者向后者过渡过程中起到的承上启下的作用。GBK 亦采用双字节表示,总体编码范围为8140-FEFE之间,首字节在81-FE之间,尾字节在40-FE之间,剔除XX7F一条线。

GBK共收入21886个汉字和图形符号,包括:

* GB2312中的全部汉字、非汉字符号。
* BIG5中的全部汉字。
* 与ISO 10646相应的国家标准GB13000中的其它CJK汉字,以上合计20902个汉字。
* 其它汉字、部首、符号,共计984个。

微软公司自Windows 95 简体中文版开始支持GBK代码,但目前的多数搜索引擎都不能很好地支持GBK汉字。

GBK编码区分三部分:

* 汉字区 包括
GBK/2:OXBOA1-F7FE, 收录GB2312汉字6763个,按原序排列;
GBK/3:OX8140-AOFE,收录CJK汉字6080个;
GBK/4:OXAA40-FEAO,收录CJK汉字和增补的汉字8160个。
* 图形符号区 包括
GBK/1:OXA1A1-A9FE,除GB2312的符号外,还增补了其它符号
GBK/5:OXA840-A9AO,扩除非汉字区。
* 用户自定义区
即GBK区域中的空白区,用户可以自己定义字符。

3 GB18030

GB18030 是最新的汉字编码字符集国家标准, 向下兼容 GBK 和 GB2312 标准。 GB18030 编码是一二四字节变长编码。一字节部分从 0x0~0x7F 与 ASCII 编码兼容。 二字节部分, 首字节从 0x81~0xFE, 尾字节从 0x40~0x7E 以及 0x80~0xFE, 与 GBK标准基本兼容。 四字节部分, 第一字节从 0x81~0xFE, 第二字节从 0x30~0x39, 第三和第四字节的范围和前两个字节分别相同。 四字节部分覆盖了从 0x0080 开始, 除去二字节部分已经覆盖的所有 Unicode 3.1 码位。也就是说, GB18030 编码在码位空间上做到了与 Unicode 标准一一对应,这一点与 UTF-8 编码类似。

目前最新的 glibc 2.2.x 系列已经全面支持了 GB18030 Locale 和 GB18030 与 UCS-4 之间的编码转换, 也就是说在系统层上 Linux 已经可以支持 GB18030 标准了。 下面问题的关键就是怎样让 XFree86 窗口系统也支持 GB18030 标准。

4 BIG5

BIG5是通行于台湾、香港地区的一个繁体字编码方案。虽然存在一些瑕疵,但广泛应用于电脑行业,尤其是互联网中,从而成为一种事实上的行业标准。

1983年10月,台湾国家科学委员会、教育部国语推行委员会、中央标准局、行政院共同制定了《通用汉字标准交换码》,后经修订于1992年5月公布,更名为《中文标准交换码》,BIG5是台湾资讯工业策进会根据以上标准制定的编码方案。

BIG5码是双字节编码方案,其中第一个字节的值在OXAO-OXFE之间,第二个字节在OX40-OX7E和OXA1-OXFE之间。

BIG5收录13461个汉字和符号,包括:

* 符号408个,编码位置A140-A3BE
* 常用字5401个,编码位置A440-C67E,包括台湾教育部颁布的《常用国字标准字体表》的全部汉字4808个,台湾教科书常用字587个,异体字6个。
* 次常用字7652个,编码位置C940-F9D5,包括台湾教育部颁布的《次常用国字标准字体表》的全部汉字6341个,《罕用国字标准字体表》中使用频率较高的字1311个。
posted @ 2006-07-25 14:06 Javaphua 阅读(2723) | 评论 (3)编辑 收藏

仅列出标题
共5页: 上一页 1 2 3 4 5 下一页