博文

unicode编码(2008-01-25 12:18:00)

摘要: Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。2006年6月的最新版本的 Unicode 是 2005年3月31日推出的Unicode 4.1.0 。另外,5.0 Beta已于2005年12月12日推出,以供各会员评价。 Unicode 的编码和实现大概来说,Unicode 编码系统可分为编码方式和实现方式两个层次。1.编码方式Unicode 的编码方式与 ISO 10646 的通用字元集(亦称[通用字符集])(Universal Character Set,UCS)概念相对应,目前的用于实用的 Unicode 版本对应于 UCS-2,使用16位的编码空间。也就是每个字符占用2个字节。这样理论上一共最多可以表示 65,536(2的16次方) 个字符。基本满足各种语言的使用。实际上目前版本的 Unicode 尚未填充满这16位编码,保留了大量空间作为特殊使用或将来扩展。上述16位 Unicode 字符构成基本多文种平面(Basic Multilingual Plane, 简称 BMP)。最新(但未实际广泛使用)的 Unicode 版本定义了16个辅助平面,两者合起来至少需要占据21位的编码空间,比3字节略少。但事实上辅助平面字符仍然占用4字节编码空间,与 UCS-4 保持一致。未来版本会扩充到 ISO 10646-1 实现级别3,即涵盖 UCS-4 的所有字符。UCS-4 是一个更大的尚未填充完全的31位字符集,加上恒为0的首位,共需占据32位,即4字节。理论上最多能表示 2,147,483,648(2的31次方)个字符,完全可以涵盖一切语言所用的符号。BMP 字符的 Unicode 编码表示为 U+hhhh,其中每个 h 代表一个十六进制数位。与 UCS-2 编码完全相同。对应的4字节 UCS-4 编码后两个字节一致,前两个字节的所有位均为0。2.实现方式Unicode 的实现方式不同于编码方式。一个字符的 Unicode 编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间......

阅读全文(1845) | 评论:0

如何学习好java(2008-01-25 11:50:00)

摘要:0.引言 软件开发之路是充满荆棘与挑战之路,也是充满希望之路。Java学习也是如此,没有捷径可走。梦想像《天龙八部》中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力,是很不现实的。每天仰天大叫"天神啊,请赐给我一本葵花宝典吧",殊不知即使你获得了葵花宝典,除了受自宫其身之苦外,你也不一定成得了"东方不败",倒是成"西方失败"的几率高一点。 "不走弯路,就是捷径",佛经说的不无道理。 1.如何学习程序设计? Java是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于Java,对C++等其他程序设计语言也一样管用。有编程高手认为,Java也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。 1.1 培养兴趣 兴趣是能够让你坚持下去的动力。如果只是把写程序作为谋生的手段的话,你会活的很累,也太对不起自己了。多关心一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但人要是没有了梦想,你觉得有味道吗?可能像许多深圳本地农民一样,打打麻将,喝喝功夫茶,拜拜财神爷;每个月就有几万十几万甚至更多的进帐,凭空多出个"食利阶层"。你认为,这样有味道吗?有空多到一些程序员论坛转转,你会发现,他们其实很乐观幽默,时不时会冒出智慧的火花。 1.2 慎选程序设计语言 男怕入错行,女怕嫁错郎。初学者选择程序设计语言需要谨慎对待。软件开发不仅仅是掌握一门编程语言了事,它还需要其他很多方面的背景知识。软件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落。 如果你对硬件比较感兴趣,你可以学习C语言/汇编语言,进入硬件开发领域。如果你对电信的行业知识及网络比较熟悉,你可以在C/C++等之上多花时间,以期进入电信软件开发领域。如果你对操作系统比较熟悉,你可以学习C/Linux等等,为Linux内核开发/驱动程序开发/嵌入式开发打基础。 如果你想介入到应用范围最广泛的应用软件开发(包括电子商务电子政务系统)的话,你可以选择J2EE或.NET,甚至LAMP组合。每个领域要求的背景知识不一样。做应用软件需要对数据库等很熟悉。总之,你需要根据自己的特点来选择合适你的编程语言。 1.3 要脚踏实地,快餐式的学习不可取 先分享一个故事。 有一个小朋友,他很喜欢研究生物......

阅读全文(2618) | 评论:0

为一个类定义两个方法:f( )和g( ).在g( )里,抛出一个自定义的新异常.(2008-01-25 11:35:00)

摘要:public class Test { public void f() throws MyException { try { g(); } catch (MyException e) { System.out.println(e.getMessage()); throw e; } } public void g()throws MyException { throw new MyException("我的异常!"); } public static void main(String[] args) { try { new Test().f(); } catch (MyException e) { System.out.println(e.getMessage()); } } public class MyException extends Exception { public MyException(String s) { super(s); } } }......

阅读全文(2875) | 评论:0

输入法(2008-01-25 11:20:00)

摘要:简介:       输入法(IME,Input Method Editor),就是利用键盘,根据一定的编码规则来输入汉字的一种方法。  英文字母只有26个,它们对应着键盘上的26个字母,所以,对于英文而言是不存在什么输入法的。汉字的字数有几万个,它们和键盘是没有任何对应关系的,但为了向电脑中输入汉字,我们必须将汉字拆成更小的部件,并将这些部件与键盘上的键产生某种联系,才能使我们通过键盘按照某种规律输入汉字,这就是汉字编码。  目前,汉字编码方案已经有数百种,其中在电脑上已经运行的就有几十种,作为一种图形文字,汉字是由字的音、形、义来共同表达的,汉字输入的编码方法,基本上都是采用将音、形、义与特定的键相联系,再根据不同汉字进行组合来完成汉字的输入的。 键盘输入法:  目前的键盘输入法种类繁多,而且新的输入法不断涌现,各种输入法各有各的特点,各有各的优势。随着各种输入法版本的更新,其功能越来越强。目前的中文输入法有以下几类:  1.对应码(流水码)  这种输入方法以各种编码表作为输入依据,因为每个汉字只有一个编码,所以重码率几乎为零,效率高,可以高速盲打,但缺点是需要的记忆量极大,而且没有什么太多的规律可言。  常见的流水码有区位码、电报码、内码等,一个编码对应一个汉字。  这种方法适用于某些专业人员,比如,电报员、通讯员等。但在电脑中输入汉字时,这类输入法已经基本淘汰,只是作为一种辅助输入法,主要用于输入某些特殊符号。  2.音码   这类输入法,是按照拼音规定来进行输入汉字的,不需要特殊记忆,符合人的思维习惯,只要会拼音就可以输入汉字。但拼音输入法也有缺点:一是同音字太多,重码率高,输入效率低;二是对用户的发音要求较高; 三是难于处理不识的生字。  例如,全拼双音、双拼双音、新全拼、新双拼、智能ABC、洪恩拼音、考拉、拼音王、拼音之星、微软拼音等;台湾的注音、忘型、自然、汉音、罗马拼音等;香港的汉语拼音、粤语拼音等。  这种输入方法不适于专业的打字员,而非常适合普通的电脑操作者,尤其是随着一批智能产品和优秀软件的相继问世,中文输入跨进了“以词输入为主导”的境界,重码选择已不再成为音码的主要障碍。新的拼音输入法在模糊音处理、自动造词、兼容性等方面都有很大提高,搜狗拼音输入法、微软拼音输入、谷歌拼音输入法等输入法还支持整句输入,......

阅读全文(1912) | 评论:0

汉字编码扩展规范(2008-01-25 11:12:00)

摘要:GBK:       汉字国标扩展码,基本上采用了原来GB2312-80所有的汉字及码位,并涵盖了原Unicode中所有的汉字20902,总共收录了883个符号,   21003个汉字及提供了1894个造字码位。   Microsoft简体版中文Windows   95就是以GBK为内码,又由于GBK同时也涵盖了Unicode所有CJK汉字,所以也可以和Unicode做一一对应。GB码,全称是GB2312-80《信息交换用汉字编码字符集 基本集》,1980年发布,是中文信息处理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。P-Windows3.2和苹果OS就是以GB2312为基本汉字编码, Windows 95/98则以GBK为基本汉字编码、但兼容支持GB2312。GB码共收录6763个简体汉字、682个符号,其中汉字部分:一级字3755,以拼音排序,二级字3008,以偏旁排序。该标准的制定和应用为规范、推动中文信息化进程起了很大作用。GBK编码是中国大陆制订的、等同于UCS的新的中文编码扩展国家标准。GBK工作小组于1995年10月,同年12月完成GBK规范。该编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。GBK码对字库中偏移量的计算公式为:[(GBKH-0xB0)*0x5E+(GBKL-0xA1)]*(汉字离散后每个汉字点阵所占用的字节)code    +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F B0A0       啊 阿 埃 挨 哎 唉 哀 皑 癌 蔼 矮 艾 碍 爱 隘 B0B0    鞍 氨 安 俺 按 暗 岸 胺 案 肮 昂 盎 凹 敖 熬 翱 B0C0    袄 傲 奥 懊 澳 芭 捌 扒 叭 吧 笆 八 疤 巴 拔 跋 B0D0    靶 把 耙 坝 霸 罢 爸 白 柏 百 摆 佰 败 拜 稗 斑 B0E0    班 搬 扳 般 颁 板 版 扮 拌 伴 瓣 半 办......

阅读全文(2317) | 评论:0

内码(2008-01-25 11:10:00)

摘要:内码是指整机汉字系统中使用的二进制字符编码,是沟通输入、输出与系统平台之间的交换码,通过内码可以达到通用和高效率传输文本的目的。比如MS Word中所存储和调用的就是内码而非图形文字。英文ASCII 字符采用一个字节的内码表示,中文字符如国标字符集中,GB2312、GB12345、GB13000皆用双字节内码,GB18030(27,533汉字)双字节内码汉字为20,902个,其余6,631个汉字用四字节内码。字符编码:字符编码就是以二进制的数字来对应字符集的字符,目前用得最普遍的字符集是ANSI,对应ANSI字符集的二进制编码就称为ANSI码,DOS和Windows系统都使用了ANSI码,但在系统中使用的字符编码要经过二进制转换,称为系统内码。 汉字内码:ANSI码是单一字节(8位二进制数)的编码集,最多只能表示256个字符,不能表示众多的汉字字符,各个国家和地区在ANSI码的基础上又设计了各种不同的汉字编码集,以能够处理大数量的汉字字符。这些编码使用单字节来表示ANSI的英文字符(即兼容ANSI码),使用双字节来表示汉字字符。由于一个系统中只能有一种汉字内码,不能识别其它汉字内码的字符,造成了交流的不便。 GB码:GB码是1980年国家公布的简体汉字编码方案,在大陆、新加坡得到广泛的使用,也称国标码。国标码对6763个汉字集进行了编码,涵盖了大多数正在使用的汉字。 GBK码:GBK码是GB码的扩展字符编码,对多达2万多的简繁汉字进行了编码,简体版的Win95和Win98都是使用GBK作系统内码。 BIG5码:BIG5码是针对繁体汉字的汉字编码,目前在台湾、香港的电脑系统中得到普遍应用。 HZ码:HZ码是在Internet上广泛使用的一种汉字编码。 ISO-2022CJK码:ISO-2022是国际标准组织(ISO)为各种语言字符制定的编码标准。采用二个字节编码,其中汉语编码称ISO-2022 CN,日语、韩语的编码分别称JP、KR。一般将三者合称CJK码。目前CJK码主要在Internet网络中使用。 Unicode码:Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容。目前,在网络、Windows系统和很多大型软件中得到应用。 内码转换:由于历史、地区原因,有时一种文字会出现多种编码方案,特别是汉字。由于不同于系统内码的字符不能在该系统中正......

阅读全文(1950) | 评论:0

国标码(2008-01-25 11:07:00)

摘要:即GB国标码:中文内码之一,代表中文简化字,在中国大陆广泛使用,影响所及,使用量渐见普及。  “国家标准信息交换用汉字编码”(GB2312-80标准),简称国标码。国标码是指1980年中国制定的用于不同的具有汉字处理功能的计算机系统间交换汉字信息时使用的编码。国际码是二字节码, 用两个七位二进制数编码表示一个汉字。目前国标码收入6763个汉字, 其中一级汉字(最常用)3755个, 二级汉字3008个, 另外还包括682个西文字符、图符。 例如“巧”字的代码是39H 41H, 在机内形式如下: 0 1 1 1 0 0 1 1 第一字节  0 0 0 0 0 1      第二字节  在计算机内部,汉字编码和西文编码是共存的,如何区分它们是个很重要的问题,因为对不同的信息有不同的处理方式。  方法之一是对于二字节的国标码,将二个字节的最高位都置成“1”, 而ASCII码所用字节最高位保持“0”,然后由软件(或硬件)根据字节最高位来作出判断。  字符代码化是指用户从键盘上输入代表某个汉字的编码。我们把采用不同的编码系统以代表汉字进行输入的方案(如数字码、拼音码和字形码),称为汉字的输入法,区位码、五笔字型码、拼音码、智能ABC、微软拼音输入法等都是其中的具体代表。   汉字通过编码输入计算机后,在其后的处理过程中,不同阶段使用不同的代码,首先通过键盘管理程序将接收到的输入编码转换为0和1构成的机内码,实现计算机的存储、加工和传输处理。   同样,存储在计算机内部的机内码也必须经转换后才能恢复汉字的“本来面目”。这种转换通常是由计算机的输入/输出设备来实现的, 有时还需要软件来参与这种转换过程。这个阶段的汉字代码称为字形码,用以显示和打印输出。 区位码:1980年,为了使每一个汉字有一个全国统一的代码,我国颁布了第一个汉字编码 的国家标准: GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是目前国内所有汉字系统的统一标准。  国标码是一个四位十六进制数,区位码是一个四位的十进制数,每个国标码或区位码都对应着一个唯一的汉字或符号,但因为十六进制数我们很少用到,所以大家常用的是区位码,它的前两位叫做区码,后两位叫做位码。    汉字库分布情况如下:     ......

阅读全文(2580) | 评论:0

ASCII码集(2008-01-25 10:07:00)

摘要: ASCII码 键盘 ASCII 码 键盘 ASCII 码 键盘 ASCII 码 键盘 27 ESC 32 SPACE 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ' 40 ( 41 ) 42 * 43 + 44 ' 45 - 46 . 47 / 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ? 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z 123 { 124 | 125 } 126 ~......

阅读全文(2099) | 评论:0

软件开发(2008-01-20 19:06:00)

摘要:软件开发的内容是:需求、设计、编程和测试! 需求:不仅仅是用户需求,应该是开发中遇到的所有的需求。比如,你首先要知道做这个项目是为了解决什么问题;测试案例中应该输入什么数据......为了清楚地知道这些需求,你经常要和客户、项目经理等交流。 设计:编码前,肯定有个计划告诉你要做什么,结构是怎样等等。你一定要按照这个来做,否则可能会一团糟。 编程:如果在项目截止日,你的程序不能跑起来或达不到客户的要求,你就拿不到钱。 测试:目的是让你知道,什么时候算是完成了。如果你聪明,你就应该先写测试,这样可以及时知道你是否真地完成了。否则,你经常会不知道,到底有哪些功能是真正完成了,离预期目标还差多远。 软件开发中,客户和开发人员都有自己的基本权利和义务。客户:  定义每个用户需求的商业优先级;  制订总体计划,包括用多少投资、经过多长时间、达到什么目的;  在项目开发过程中的每个工作周,都能让投资获得最大的收益;  通过重复运行你所指定的功能测试,准确地掌握项目进展情况;  能随时改变需求、功能或优先级,同时避免昂贵的再投资;能够根据各种变化及时调整项目计划;  能够随时取消项目;项目取消时,以前的开发工作不是一堆垃圾,已开发完的功能是合乎要求的,正在进行或未完成的的工作则应该是不难接手的。 开发人员:  知道要做什么,以及要优先做什么;  工作有效率;  有问题或困难时,能得到客户、同事、上级的回答或帮助;  对工作做评估,并根据周围情况的变化及时重新评估;  积极承担工作,而不是消极接受分配;  一周40小时工作制,不加班。 软件开发过程可以包括以下6个阶段: 计划       对所要解决的问题进行总体定义,包括了解用户的要求及现实环境,从技术、经济和社会因素等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度作出估计。制订完成开发任务的实施计划。 分析       软件需求分析就是回答做什么的问题。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。本阶段的基本任务是和......

阅读全文(1588) | 评论:1

需求(2008-01-20 19:05:00)

摘要: 需求的定义是为“系统必须符合的条件或具备的功能”。       需求的种类各种各样。一种分类的方法叫作 FURPS+ 模型 [GRA92],它使用首字母缩写词 FURPS 来描述具有以下子类别的主要需求类别。       功能性、       可用性、       可靠性、       性能和       可支持性       FURPS+ 中的“+”可提醒您还要包括如下需求:       设计约束、       实施需求、       接口需求和       物理需求。       功能性需求规定了系统无需考虑物理约束而必须能够执行的动作。用例模型和用例中最能够说明这些需求。功能性需求就这样规定了系统的输入输出行为。       功能性需求之外的需求,如下所列,有时称为非功能性需求。许多需求是非功能性的,它们仅仅说明系统或系统环境的属性。有些需求在用例中有所记录,未能记录的可在补充规约中予以规定。非功能性需求解决的是如下所列的问题。       对于软件需求的完整定义,可以将用例和补充规约结合到一起以定义某一“特性”或其他子系统分组的软件需求规约 (SRS)。 功能性       功能性需求包括:       特性集、       功能和     &n......

阅读全文(1821) | 评论:0