我时常问自己,自己究竟是不是搞技术的,是不是适合搞技术,或者说这里是否适合搞技术? 我经常苦闷,正如每天总是重复着三点一线,总是让琐事占据了生命里宝贵的时光,是否是一种犯罪?
羽的自行车丢了
女人就是女人啊,车丢唠叨我一晚上!~我一怒之下只好消费以泄愤——又买了一个域名,四位的.com
有些人总是想的太多
我为人处事很直接,该是啥就是啥,只想站在纯技术的角度去思考问题。可是有些人,总是想的太多……最简单的例子,就是所谓的端口冲突问题,非常非常非常简单的问题,稍微有点知识的人都知道怎么处理,不管是修改端口、绑定IP、虚拟子目录等等,都可以解决,有些人却弄的地动天惊的。
在单位内网架了个BBS
虽然单位里了解这个的人不是很多,但是还是架了。就像IM软件,虽然领导不支持甚至反对,但是在我顶着压力部署的情况下还是取得了较好的效果。至少现在IM软件是大家最常用的东西之一了。
让IE默认Google搜索
http://www.google.com/google.reg 把它导入注册表就可以了。 http://www.google.com/default.reg 这个是还原的。 看看这个网址,在根下啊!绝对的体贴啊。
寻龙山一日游
本来不想东跑西跑的,可是羽死活要拉我一块儿去,没办法,只得去了(得到的奖赏是她在车上的呕吐物)。 老实说,那里的娱乐设施真的不怎么样,上午的龙鳞坡石林,感觉就像假的,处处流露着人工的痕迹(可不是鬼斧神工,是人斧车工)。 龙隐镇还算有点意思,有民国时候的影子,不过让我在里面找到了60年代的年历,真是扫兴。羽兴致勃勃的在这里上了次花轿,让我撩开了帘门,兴致勃勃的在这里上了次鸡公车(独轮车),让我推着乱跑。期间和正吃豆花的“王保长”划拳,结果他输了,赫赫,他请客。 要说最好的还是卧龙洞,可以让人真正的感到鬼斧神工,地下如此之大的溶洞,让人叹为观止。导游小姐讲的也不错,比上午那个餐厅服务器客串的导游好多了。 对了,他们有个网站:http://www.scxls.com/,有兴趣可以去看看照片。
2005年司法考试复习方法
一、信 念 树立必胜的信念,相信自己一定能通过考试,这是复习应考的第一步。 司法考试的通过率很低,而且近年来越来越加强对法律的理论(通说)深度和综合运用能力的考查。从历年司法考试(律考)通过情况看,学法律的研究生的通过率并不比本科生占绝对优势,而非法律专业的考生通过率也相当高,说明具有法律基础的考生并不具有绝对的优势。 所以,不管是法科学生还是非法科学生,都要相信:机会面前人人都是平等的,要一步一个脚印地有针对性地复习,充满信心的备考。 二、重点分析法 在整个复习过程中,要时刻注意方法方面的探索。以下两种重点分析法,无论对法科还是非法科学生来说,都是十分重要的。 以法条为本,司法解释为重:司法解释解决的是具体法律运用中常见而疑难的问题,可操作性强,并且适合命题的素材。例如,《民法通则》作为我国民商事方面的基本大法,极其重要。 新法为重,考查内容紧扣热点问题:这是司法考试与以往律师资格考试的共同点: ①、热点问题一般是学术界、司法界比较关注的问题,例如证据问题是近年来大家研究的热点问题,司法考试考察有关证据内容的大大增加,作为最新研究成果的最高人民法院关于诉讼证据的若干规定,受到命题人的特别青睐。 ②、新法具有很强的现实意义,不仅可以作为司法考试这种难度较大的职业考试,拉开考生分数档次的重要内容,也符合“与时俱进”的精神。 三、复习三步骤 1、通读教材并辅以适量的同步测试题: 教材的选择。“工欲善其事,必先利其器”,能否找到适合自己的指导书是通往成功的捷径。目前有二种比较规范的教材都符合考试要求并值得推荐:一种是基础型,法律出版社出版的“司法考试辅导用书”(共三册),其优点是对基本概念、基本理论的介绍比较详细,考生如果基础比较差,复习时间又比较宽裕的,可选择此“辅导用书”;另一种是应试型,《司法考试名师讲义》其由曾参加命题、多年从事司法考试研究和在一线司法考试辅导的专家、教授亲自编写的,应试性强、重点突出,对考试重点特别是难点、疑点深入阐述。 作好笔记:便于以后复习时合理分配精力,根据掌握程度不同分别标以不同记号如“三星”表示已理解并掌握,“二星”表示已理解但没掌握的,“一星”则是尚未理解与掌握的。做同步测试题:通读教材后做同步测试题的目的是,检验学习效果,及时调整学习方法,便于进一步理解和掌握这些知识点的运用,并带着问题进入下一阶段学习。 2、精读法条: 范围:司法考试主管部门建议考生阅读的一万多条法规中,从司法考试命题的规律分析:其中的50%基本不考,30%偶尔考,20%是经常考的(却占了考试的85%以上),那么考生在复习时对其中的50%可以不看,30%有时间去阅读一下,对20%法条必须多花时间予以精读。 方法:所谓精读法条而非阅读,指的是精读时应带着以下问题: ①、读法条“题眼”在哪里(即关键词); ②、该法条的考点以及会有怎样的运用; ③、与相关法条的联系与区别。当然精读时带着这三个问题肯定是有难度的,需要一定的经验及分析能力,那么可借助比较权威的重点法条分析的辅导书,如中国**出版的《司法考试法条串讲》,这样就会事半功倍。 3、做3-5套模拟题冲刺: 真题测试:从近3年考试真题中选取1-2套做为模拟测试,因为“真题”所提供的出题样式的示范性和命题质量非一般模拟题可以比拟,其科学性和临场感远超一般的模拟题,最具实战性,也最有利于测试出考生的真实水平。适应考试气氛,锻炼做题速度:前三卷中,每卷100道题在三小时内作完,即1.8分钟处理一个小案例,注意1小时做1道题与1.8分钟做一道题是两个截然不同的概念。 (3) 通过做题可以查漏补缺,明确下一步的复习重点。 四、对每天复习过的知识,临睡前一定要浏览一遍,并在周末对每周复习的内容要翻一遍,最大限度地克服遗忘规律。 五、如果时间充足,可以将教材通读一遍,对于第一卷考察内容可以将相对重要的内容划出来或者做笔记,等到第二轮的复习阶段则只要读所划内容甚至只要背一背笔记内容即可。 六、制定的复习计划一定要细化到每天,其好处有二,一是知道自己每天要做些什么;二是从每天计划的落实找到成就感。
三款支持内网建站服务比较(转)
来自:http://www.pjflower.com/pem/Article/Class1/Class16/200404/431.html 随着Internet的迅速发展,可用IP资源日渐枯竭,越来越多的Internet用户只能通过地址端口转换方式(NAT/NAPT)单向访问Internet。另一方面,随着宽带接入的普及,越来越多的公司或个人希望把Internet服务器放在办公室或家里,以便降低成本、方便维护。为了使位于NAT后的宽带用户(位于内网)可以向Internet发布自己的主机服务(如WEB服务),一些支持内网发布的软件相继发布。他们的原理是利用特定的网址做中转服务,而这些网址无一例外的有公网IP,不需要端口映射,网站的安装设置与公网网站一样方便。值得一提的是科迈TrueHost在内网发布领域取得突破性进展,科迈公司首创的DirectSend隧道技术,把内网主机完全“暴露”于Internet中,尤如一台放在家里的托管主机,实现内网主机在Internet上完全可见。FTP PORT方式可实现网站与来访者之间直接通讯科迈网首创DirectSend隧道技术,不再使用数据中转(部分实现)。 3位本文的主人公都是新一代IP复用软件 http://www.oklan.com,旭锐达动态主机,免费7天 http://www.xinshi.net/ 信景的网络通, 免费5天 http://www.dns0755.net/科迈的内网通,免费7天 长期使用都要收费,不爽! 他们共同的口号是:只要您的计算机能上网,我们就可以把您的计算机变成一台Internet上有固定域名的主机。 它们都支持公网与内网接入方式、支持代理服务器 同时使用着旭锐达动态主机和信使网络通两款软件(据说是目前私有IP用户——比如小区局域网——唯一可选择的两款软件),如果您还在举棋不定该如何选择的话,我对两款软件的使用心得,或许对您有些帮助。 ——软件版本及价格 旭锐达动态主机(G2)内网专业版 全协议 400元 信使网络通个人版 http + ftp 480元 科迈的内网通标准版280元
- 客户端: G2客户端软件显得非常人性化,可以设置的项目很多,比如域名、在线和离线设定,甚至还有一个网站推广栏目——尽管很少有人会奢望它能给你的网站带来流量。安装在NT上 网络通则略显逊色,所有项目都要在服务端修改,而且有的版本的XP用户,当客户端自动启动后,无法在快速启动栏中看到,给使用带来了不便。 安装在NT上 内网通设置较GE更专业可设置的项目同样多
- 速度: 经过软件测试,无论是响应时间还是其它各项数据,G2都更胜一筹,毕竟是专业版的嘛,同一主机同一端口。
- 稳定性: 建站当然是稳定压倒一切,我在本论坛上,经常看到有骂网络通的帖子,旭锐达原先也有一个论坛,但大概骂它们的人更多,管理员不胜其烦,最后干脆改成了P2P的用户帮助系统。不过平心而论,要维持100%的不出问题,也是不太可能的,因为从来就不存在没有BUG的系统——在稳定性上,我认为网络通可当之无愧的得到一分,当然它还远没有达到完美,这可以从我们的连接日志上发现端倪。至于G2,我只能说差强人意,这一点您也可以从上面的链接得到印证——幸运的话!科迈的内网版总体感觉是技术很新。部分数据能够不通过中转!发挥局网带宽!稳定性跟网络通差不多。
- 易用性: 我个人认为,网络通个人版分协议出售会给相关软件的安装和使用带来不便,毕竟不是每个人都是自定义安装服务软件的高手,相比之下内网同和G2的一揽子服务更便于初学者使用,几乎可以毫不费力的架设web,ftp,mail甚至是游戏服务器。 5.域名管理: 网络通好像可以迁入国际域名,但我找遍了也没发现 Primary/Backup DNS,怎么迁入呀?所以无从知道是怎么管理的;G2一个很有意思的功能就是域名别名设置,比如你的国际域名为domain.com,当你设定了Mail或FTP等等别名后,不但可以使用domain.com访问,还可以使用mail.domain.com…等别名访问你的站点,但终究不是域名转发,除非你还有其它的G2账户,否则还是无法充分利用域名资源。内网通在域名管理上更胜一筹, 自助服务中的动态域名管理非常方便。,而且立即生效。
- 服务: 科迈的服务一直很到位,自助功能和说明都非常详细。旭锐达的服务给人感觉更加正规,他们会在付款后寄给你正规发票,系统出现崩溃的时候他们会延长你服务的到期时间(长达一个月),这一切会让你感觉到很贴心,但网络通好像还没有类似的机制,至少我还没有看到。 7 价格: 无疑的,G2的价格更吸引人:标准版80元/年,专业版100元/年,科迈标准版和专业版分别是200和280员,也有一定的竞争了,内网专业版个人用户400元/年、企业用户1500元/年,我个人认为网络通应该有一定的降价空间,或者像我提议的那样,分开个人和企业用户,相信会有更多的个人版用户乐于多付些钱而使用标准版或专业版的。 结论:科迈的内网版更人的影响深刻,可以不通过中转,充分发挥了局网带宽,应该给5分;如果你不太在意稳定性又没有很多预算的话,G2是个不错的选择,尽管有诸多可人之处,但不稳定成了它的致命伤,给3.5分;如果您是建立一个商业或半商业站点,又恰巧和我一样支付不起网络通标准版或企业版昂贵的费用,那要么干脆就近选择一个ISP租用十到十五人共享的服务器,稳定可靠,包括国际域名预算也绝对不会超过800元。 后记:作出这样的结论对内网用户来说也许并不是一个好消息,毕竟我们希望有更多更好的选择,让我们期待其它更多的优秀软件的加入吧,只有这样,我们才可能享受更公道的价格和更优质的服务。
免费网络硬盘的归类分析(转)
http://www.newsunday.com/blogview.asp?logID=2531 在网上冲浪,总要有个网络硬盘,这样一是可以保存自己重要的资料,相当于给重要资料做个备份,毕竟有时候硬盘也不太可靠;二是如果外出,只要有网络,就可以方便地找到自己的资料进行处理;三是把网络硬盘做为一个资料分享的场所,通过它把自己的资源与好友共享。 根据我的分析和归类,现在的网络硬盘大致有四种类型:(以下只是自己一些试用的经验,如有不符,欢迎指正。) 一、专业的网络硬盘。 功能专业,只提供网络硬盘的服务,上传下载的速度以及文件共享方面做得比较好。 蜂盘 http://www.1g.cn 100M空间,基于资源管理器访问,使用非常方便,和本地硬盘使用差不多,速度也很快,蜂盘提倡资源共享,分享蜂友的蜂盘里共享的所有东东。现在使用的人也越来越多了,蜂盘是目前互联网上我用过的最好的网络硬盘。 Vdisk http://www.vdisk.cn 100M,需要客户端才可上传文件,而且速度不太稳定,类似于蜂盘的一个东东,不过现在有绿色免安装版的客户端程序,也可以共享资源,值得一提的是它可以在线搜索共享资源。 永硕E盘 http://www.ys168.com/ 20M,比较稳定,平时速度还不错,而且可以收藏网址,浏览者也可以留言,对于小于0.3M的jpg,gif,bmp,txt文件可以直接打开,不爽的是有文件和流量的限量。 二、从电子邮箱或是个人主页发展而来的web方式网络硬盘。 这类一般是最初提供邮箱或是主页空间,后来把网络硬盘做为一个附加的功能加上去的。因此两者都是登录之后,统一在一起进行操作的。功能上也比较完善了。比如可以实现网络硬盘密码共享、文件批量上传等。web方式的网络硬盘随着互联网的发展,迟早要会被淘汰的,因为http文件传输协议有先天性的残疾,大文件传不上去,速度慢,传输过程是明码的。这类型的网络硬盘有: 雅虎公文包 http://cn.briefcase.yahoo.com/ 30M,虽然空间不大,而且速度不太理想,不过使用它只要一个理由,可靠。有什么比可靠更能打动人呢?雅虎总不会说关闭就关闭你帐户吧? K65 http://www.k65.net/ 电子邮箱、网络硬盘、电子相册三合一,无限空间,试用感觉不错,不过不知道能不能一直免费下去? 35网络U盘 http://ud.35.com 同K65一样也是三合一的空间,有客户端和在线两种上传方式,还可以添加U盘邻居,与好友资源共享,只是不知道免费用户的时效是多久。 MSN 用户的免费网络磁盘 微软提供的免费午餐,使用非常方便,在网上邻居[MSN 上的“我的网站”]就可以进入,就是容量太小。 万吉网络硬盘 http://netdisk.9999g.com/ 32M,网络硬盘与个人主页捆绑,空间共享,安装控件可实现批量上传和文件续传,并有文件共享的功能。 台湾蕃著藤网路硬碟 http://webhd.yam.com 6M,上传文件有2M限制,对中文支持不太好,可文件共享,若连续45天没登入,将被清空。要求太严格,不推荐使用。 SUPER DOG http://www.beshou.com/superdog/ 这个比K65更夸张,集合了文件存储、电子相册、记事本、网址收藏、通讯薄、日程安排、涂鸦板、名站导航、网上社区、休闲娱乐等功能于一体。这么多的功能,而网址对应的却只是“全球商业搜索”网站下的一个虚拟目录,这让我有些不敢放心,不推荐使用。 三、大文件中转空间。 并不是属于你的空间,只是替你暂时保管,有存放时间限制。 中国活动通信 http://www.mofile.com/ 32M的保管箱和512M的接力站,前者是永久保存,后者只能保存三天。最大的用处就是可以存放和提取大文件。也因为文件大,断线或错误的可能性大,所以有断点续传的功能(系统要安装Java虚拟机)。 无忧备份 http://www.51bak.net 跟mofile差不多,不同的是可以上传单个1G的文件,免费保存20天,安装客户端可以实现断点续传。 四、IM软件附加的网络硬盘。 比如QQ和UC的网络硬盘,不过毕竟是附加的功能,IM软件主要还是以网络即使信息联系为主,所以这类的网络都需要安装IM软件才能上传文件,而且自己要提取和朋友下载都不是太方便。所以就不详细介绍了。
谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词(转)
http://dev.csdn.net/develop/article/69/69883.shtm 这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢? 我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)。但这些标记是基于什么标准呢? 问题二: 最近在网上看到一个ConvertUTF.c,实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于Unicode(UCS2)、GBK、UTF-8这些编码方式,我原来就了解。但这个程序让我有些糊涂,想不起来UTF-16和UCS2有什么关系。 查了查相关资料,总算将这些问题弄清楚了,顺带也了解了一些Unicode的细节。写成一篇文章,送给有过类似疑问的朋友。本文在写作时尽量做到通俗易懂,但要求读者知道什么是字节,什么是十六进制。 0、big endian和little endian big endian和little endian是CPU处理多字节数的不同方式。例如“汉”字的Unicode编码是6C49。那么写到文件里时,究竟是将6C写在前面,还是将49写在前面?如果将6C写在前面,就是big endian。还是将49写在前面,就是little endian。 “endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。 我们一般将endian翻译成“字节序”,将big endian和little endian称作“大尾”和“小尾”。 1、字符编码、内码,顺带介绍汉字编码 字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。 GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是7294=6768。其中有5个空位是D7FA-D7FE。 GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。 从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。 有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。 这里还有一些细节: GB2312的原文还是区位码,从区位码到内码,需要在高字节和低字节上分别加上A0。 在DBCS中,GB内码的存储格式始终是big endian,即高位在前。 GB2312的两个字节的最高位都是1。但符合这个条件的码位只有128128=16384个。所以GBK和GB18030的低字节最高位都可能不是1。不过这不影响DBCS字符流的解析:在读取DBCS字符流时,只要遇到高位为1的字节,就可以将下两个字节作为一个双字节编码,而不用管低字节的高位是什么。 2、Unicode、UCS和UTF 前面提到从ASCII、GB2312、GBK到GB18030的编码方法是向下兼容的。而Unicode只与ASCII兼容(更准确地说,是与ISO-8859-1兼容),与GB码不兼容。例如“汉”字的Unicode编码是6C49,而GB码是BABA。 Unicode也是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。Unicode的学名是”Universal Multiple-Octet Coded Character Set”,简称为UCS。UCS可以看作是”Unicode Character Set”的缩写。 根据维基百科全书(http://zh.wikipedia.org/wiki/)的记载:历史上存在两个试图独立设计Unicode的组织,即国际标准化组织(ISO)和一个软件制造商的协会(unicode.org)。ISO开发了ISO 10646项目,Unicode协会开发了Unicode项目。 在1991年前后,双方都认识到世界不需要两个不兼容的字符集。于是它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。从Unicode2.0开始,Unicode项目采用了与ISO 10646-1相同的字库和字码。 目前两个项目仍都存在,并独立地公布各自的标准。Unicode协会现在的最新版本是2005年的Unicode 4.1.0。ISO的最新标准是10646-3:2003。 UCS规定了怎么用多个字节表示各种文字。怎样传输这些编码,是由UTF(UCS Transformation Format)规范规定的,常见的UTF规范包括UTF-8、UTF-7、UTF-16。 IETF的RFC2781和RFC3629以RFC的一贯风格,清晰、明快又不失严谨地描述了UTF-16和UTF-8的编码方法。我总是记不得IETF是Internet Engineering Task Force的缩写。但IETF负责维护的RFC是Internet上一切规范的基础。 3、UCS-2、UCS-4、BMP UCS有两种格式:UCS-2和UCS-4。顾名思义,UCS-2就是用两个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码。下面让我们做一些简单的数学游戏: UCS-2有2^16=65536个码位,UCS-4有2^31=2147483648个码位。 UCS-4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为256行 (rows),每行包含256个cells。当然同一行的cells只是最后一个字节不同,其余都相同。 group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中,高两个字节为0的码位被称作BMP。 将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节,就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。 4、UTF编码 UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下: UCS-2编码(16进制) UTF-8 字节流(二进制) 0000 – 007F 0xxxxxxx 0080 – 07FF 110xxxxx 10xxxxxx 0800 – FFFF 1110xxxx 10xxxxxx 10xxxxxx 例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以肯定要用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 110001 001001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。 读者可以用记事本测试一下我们的编码是否正确。 UTF-16以16位为单元对UCS进行编码。对于小于0x10000的UCS码,UTF-16编码就等于UCS码对应的16位无符号整数。对于不小于0x10000的UCS码,定义了一个算法。不过由于实际使用的UCS2,或者UCS4的BMP必然小于0x10000,所以就目前而言,可以认为UTF-16和UCS-2基本相同。但UCS-2只是一个编码方案,UTF-16却要用于实际的传输,所以就不得不考虑字节序的问题。 5、UTF的字节序和BOM UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。例如收到一个“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”,那么这是“奎”还是“乙”? Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。BOM是一个有点小聪明的想法: 在UCS编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE”。 这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。 UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF(读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。 Windows就是使用BOM来标记文本文件的编码方式的。 6、进一步的参考资料 本文主要参考的资料是 “Short overview of ISO-IEC 10646 and Unicode” (http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html)。 我还找了两篇看上去不错的资料,不过因为我开始的疑问都找到了答案,所以就没有看: “Understanding Unicode A general introduction to the Unicode Standard” (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter04a) “Character set encoding basics Understanding character set encodings and legacy encodings” (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter03) 我写过UTF-8、UCS-2、GBK相互转换的软件包,包括使用Windows API和不使用Windows API的版本。以后有时间的话,我会整理一下放到我的个人主页上(http://fmddlmyy.home4u.china.com)。 我是想清楚所有问题后才开始写这篇文章的,原以为一会儿就能写好。没想到考虑措辞和查证细节花费了很长时间,竟然从下午1:30写到9:00。希望有读者能从中受益。